本人刚开始学习Delphi,所用Delphi版本为7,在自行以下代码时遇到Incompatible types问题,求高手给予帮助unit EmunDemo;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
//定义集合
TStringSet = set of char;
//定义枚举
TMyEnum = (Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday);
TForm1 = class(TForm) Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
m: TMyEnum;
num: Integer;
begin
num:=0;
// 返回枚举类型的长度
for m:=Low(TMyEnum) to High(TMyEnum) do
Inc(num);
ShowMessage(IntToStr(num));
end;procedure TForm1.Button2Click(Sender: TObject);
var
character : 'a'..'z';
stringSet: TStringSet;
word: string;
s: char;
begin
//stringSet:= [];
//循环从character中读取元素,
for s:= Low(character) to High(character) do
begin
if s in ['d','e','l','p','h','i'] then
begin
//添加元素
Include(stringSet,s);
end;
end; //读取元素
for s:= Low(stringSet) to High(stringSet) do
word := word + s;
ShowMessage(word);
end;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
//定义集合
TStringSet = set of char;
//定义枚举
TMyEnum = (Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday);
TForm1 = class(TForm) Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
m: TMyEnum;
num: Integer;
begin
num:=0;
// 返回枚举类型的长度
for m:=Low(TMyEnum) to High(TMyEnum) do
Inc(num);
ShowMessage(IntToStr(num));
end;procedure TForm1.Button2Click(Sender: TObject);
var
character : 'a'..'z';
stringSet: TStringSet;
word: string;
s: char;
begin
//stringSet:= [];
//循环从character中读取元素,
for s:= Low(character) to High(character) do
begin
if s in ['d','e','l','p','h','i'] then
begin
//添加元素
Include(stringSet,s);
end;
end; //读取元素
for s:= Low(stringSet) to High(stringSet) do
word := word + s;
ShowMessage(word);
end;end.
if s in [1,2,3]
for s:= Low(stringSet) to High(stringSet) do
改成你说的那种方式还是不行
//遍历方法用错了 改动如下
vStringSet:= []; //初始化集合
//循环从character中读取元素,
for s:= Low(character) to High(character) do
begin
if s in ['d','e','l','p','h','i'] then
begin
//添加元素
Include(vStringSet,s);
end;
end; //读取元素
word := '';
for s in vStringSet do
word := word + s;
ShowMessage(word);//如果提示数据类型问题 就把char改成ansichar
var
m: TMyEnum;
num: Integer;
begin
num:=0;
// 返回枚举类型的长度
for m:=Low(TMyEnum) to High(TMyEnum) do
Inc(num);
ShowMessage(IntToStr(num)); //通过下标计算元素个数 与上边的方法结果相同
num := integer(High(TMyEnum)) - integer(Low(TMyEnum)) + 1;
ShowMessage(IntToStr(num));
end;
又遇到for loop control variable must be simple local variable 这个错误 是不是Delphi7 不支持for...in...的遍历啊
你的使用环境, character就是最大集
for s:= Low(character) to High(character) do
begin
if s in vStringSet then
begin
word := word + s;
end;
end;