Доброе время суток!
У меня небольшой вопрос.
По
http://kolnmck.kolmck.net/lessons/lessons12.shtmlделал не большой пример чуть по шире.
Спотыкаюсь в сохранении почему-то
первую строку сохраняет так
****************************
C:\Documents and SettingsAll Users
All Users.WINDOWS.0
Default
...
****************************
то бишь ещё и почему-то примешивает начало директории
к первой строке. А дальше нормально.
Вот код
program Project1;
uses
windows,
messages,
kol;
type TOnEvent = procedure( Sender: PObj )of object;
var
form:Pcontrol;
ListFile,
ListDrv,Button1,Button2 :PControl;
FileL:pDirList; f:textfile;
s:string; bo:boolean;Dialog:pOpenSaveDialog;
i,j:integer;
DriveBits: set of 0..25;
DriveNum:integer;
DriveChar:char;
Procedure SelDrv ( Dummy : Pointer; Sender : PControl );
begin
s:= ListDrv.Text ;
if FileL=nil then
FileL := NewDirList(s,'*.*',FILE_ATTRIBUTE_NORMAL)
else
begin
FileL.Clear ;
FileL.ScanDirectory(s,'*.*',FILE_ATTRIBUTE_NORMAL);
end;
FileL.Sort([sdrByName]);
ListFile.Clear;
if FileL.Count > 0 then
for i:=0 to FileL.Count-1 do
ListFile.add(FileL.Names[i]);
end;
procedure clickbutton1(dummy:pointer;Sender:PControl; var mouse:TMouseEventData);
begin
assign(f,GetWorkDir+'Puth.txt');
rewrite(f);
for i:=0 to ListFile.Count-1 do s:=s+ListFile.Items[i]+#13#10;
write(f,s);
closefile(f);
form.StatusText[0]:=PChar(GetWorkDir+'Puth.txt');
end;
procedure clickbutton2(dummy:pointer;Sender:PControl; var mouse:TMouseEventData);
begin
Dialog:=NewOpenSaveDialog('',FileFullPath('Project1.exe'),[]) ;
Dialog.title := 'Сохранить как...';
dialog.Filter := '*.txt|*.txt|все|*.*';
Dialog.OpenDialog := false;
if Dialog.Execute then
assign(f,Dialog.Filename)else exit;
rewrite(f);
for i:=0 to ListFile.Count-1 do s:=s+ListFile.Items[i]+#13#10;
write(f,s);
closefile(f);
form.StatusText[0]:=PChar(Dialog.Filename);
end;
procedure ListBox1Click(dimmy:pointer;Sender:PControl);
begin
if bo=false then begin
ListDrv.Text:=ListDrv.Text+ListFile.Items[ListFile.curindex];bo:=true; end else
ListDrv.Text:=ListDrv.Text+'\'+ListFile.Items[ListFile.curindex];
SelDrv(nil,nil);
end;
procedure formResize(Sender: PObj);
begin
ListFile.Width := form.ClientWidth -10;
ListFile.Height:=form.ClientHeight-60;
Button1.Top := form.ClientHeight - Button1.Height - 10;
Button2.Top := form.ClientHeight - Button2.Height - 10;
end;
begin
Applet:=NewApplet('Список файлов');
form:=NewForm(Applet,'Список файлов').SetSize(250,300);
form.Font.FontStyle := [ fsBold ];
form.Font.FontHeight := 50;
form.Font.FontName := 'Times New Roman';
form.CenterOnParent ;
Form.Font.FontName := 'MS Sans Serif';
Form.Font.FontHeight := 9;
ListDrv := NewComboBox(form,[]).SetAlign(caTop);
ListFile := NewListbox(form,[]).SetSize(form.Width-10,200).setposition(0,24);
Button1:=NewButton(form,'Сохранить').SetSize(68,25).SetPosition(10,230);
Button2:=NewButton(form,'Сохранить как').SetSize(95,25).SetPosition(84,230);
Integer(DriveBits) := GetLogicalDrives;
i:=0;
j:=0;
for DriveNum := 0 to 25 do
if DriveNum in DriveBits then
begin
DriveChar := Char(DriveNum + Ord('a'));
DriveChar := UpCase(DriveChar);
ListDrv.Add(DriveChar+':\');
if DriveChar='C' then j:=ListDrv.Count-1;
end;
ListDrv.CurIndex := j;
ListDrv.OnChange := TOnEvent( MakeMethod( nil, @SelDrv ) );
ListFile.OnClick:=TonEvent(MakeMethod(nil,@ListBox1Click));
SelDrv(nil,nil);
Button1.OnClick:=TonEvent(MakeMethod(nil,@clickbutton1));
Button2.OnClick:=TonEvent(MakeMethod(nil,@clickbutton2));
form.OnResize:=TonEvent(MakeMethod(nil,@formResize));
bo:=false;
form.StatusText[0]:='';
run(Applet);
end.
Может конечно вопрос простой.
Заранее спасибо.