有关ListBox循环的问题!编译总是出错!
CS668 2008-10-11 08:06:53 unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
grp1: TGroupBox;
lst1: TListBox;
btn1: TButton;
btn2: TButton;
btn3: TButton;
btn4: TButton;
btn5: TButton;
btn6: TButton;
dlgOpen1: TOpenDialog;
tmr1: TTimer;
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
procedure btn3Click(Sender: TObject);
procedure btn4Click(Sender: TObject);
procedure tmr1Timer(Sender: TObject);
procedure btn6Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
flag:boolean;
implementation
{$R *.dfm}
procedure TForm1.btn1Click(Sender: TObject);
var
strfile:string;
i:Integer;
begin
dlgOpen1.Title := '选择文件';
if dlgOpen1.Execute then
begin
for i:=0 to dlgOpen1.Files.Count-1 do
begin
strfile:=dlgOpen1.Files.Strings[i];
lst1.Items.Add(strfile);
end;
lst1.Selected[0]:=true;
end;
end;
procedure TForm1.btn2Click(Sender: TObject);
begin
lst1.DeleteSelected;
end;
procedure TForm1.btn3Click(Sender: TObject);
begin
lst1.Clear;
end;
procedure TForm1.btn4Click(Sender: TObject);
var
PlayerFile, swfFile: TMemoryStream;
ExeFile: TFileStream;
SWFFileName:String;
AppPath: String;
exeFileName: String;
nInt, nFileSize: Integer;
FVersion: Array [0..2] of byte;
begin
// 将Edit1中的路径赋给exeFileName变量
swfFileName :=lst1.items.strings[lst1.ItemIndex];
// 修改EXE路径中的扩展名,以获取SWF文件的存储路径。
exeFileName := ChangeFileExt(swfFileName, '.exe');
// 检查指定的EXE文件是否存在,如果不存在则退出过程,不做任何处理。
if not FileExists(swfFileName) then
begin
ShowMessage('文件未找到!');
Exit;
end;
// 获取该转换程序所在路径
AppPath := ExtractFilePath(ParamStr(0));
if AppPath[Length(AppPath)] <> '\' then AppPath := AppPath + '\';
// 首先,将Flash Player文件读入内存
PlayerFile := TMemoryStream.Create; // 创建PlayerFile对象
PlayerFile.LoadFromFile(AppPath + 'Player.exe'); // 读入内存
// 然后新建一个空的EXE文件,保存在同SWF文件想同的路径中
ExeFileName := ChangeFileExt(lst1.items.strings[lst1.ItemIndex], '.exe'); // 将扩展名改为EXE即获得EXE文件路径
ExeFile := TFileStream.Create(ExeFileName + '.exe', fmCreate or fmOpenWrite);
// 此时将要转换的SWF文件读入内存
swfFile := TMemoryStream.Create; // 创建swfFile对象
swfFile.LoadFromFile(lst1.items.strings[lst1.ItemIndex]); // 读入内存
// 准备工作已经完成,现在将Player文件内容先写入EXE文件中
ExeFile.CopyFrom(PlayerFile, 0);
// 然后再将SWF文件内容追加到EXE文件中去
ExeFile.CopyFrom(swfFile, 0);
// 大部分工作已经完成,现在剩下将文件大小及相关标志写入到文件尾中
// 设置版本号
FVersion[0] := $56;
FVersion[1] := $34;
FVersion[2] := $12;
ExeFile.Write(FVersion, sizeof(FVersion)); //将版本号写入EXE文件中
nInt:=$FA; // 设置标志
ExeFile.Write(nInt, 1); // 将标志写入EXE文件中
nFileSize := swfFile.Size; // SWF文件大小
ExeFile.Write(nFileSize, 4); // 将SWF文件大小写入EXE文件中
// 释放资源,完成转换工作
ExeFile.Free;
swfFile.Free;
PlayerFile.Free;
end;
procedure TForm1.tmr1Timer(Sender: TObject);
if flag=True then
begin
lst1.Selected[lst1.ItemIndex]:=false;
if lst1.ItemIndex <lst1.Count-1 then
lst1.ItemIndex:=lst1.ItemIndex+1
else
lst1.ItemIndex:=0;
lst1.Selected[lst1.ItemIndex]:=true;
end; procedure TForm1.btn6Click(Sender: TObject);
begin
Close;
end;
end.
运行之后提示:
[Error] Unit1.pas(130): Declaration expected but 'IF' found
请高手指教错误在那?