Błąd w procedurze WinApi

0

Witam,

Sam już nie wiem gdzie jest błąd. Procedura powinna kopiować pliki o

podanej masce np '.txt;.bak,*.ini' z podkatalogów. Sprawdzam to u siebie pod Win 2000 (użytkownik ma odpowiednie prawa). Pliki kopiuje ale nie z podfolderów. Także gdy maskę ustawię na np. . lub *.zip, to nie kopiuje tych plików.

Jeżeli ktoś wyłapie błąd to będę bardzo wdzięczny.

Kompiluję to pod Delphi 7 Personal.

Jeszcze jedno pytanie. Proszę o sugestie jak można by to w prosty sposób przenieść do Delphi 5 Standard, bowiem tam nie ma StrUtils
lub jak to napisać napisać żeby działało.

Kod programu:

uses FileCtrl, StrUtils;

function getfilelist(directory: string; ext: string; sender:
TWinControl):
TStringList;
var
fl: TFileListBox;
dl: TFileListBox;
rl: TStringList;
i, j: integer;
begin
directory := IncludeTrailingPathDelimiter(directory);
fl := TFileListBox.Create(sender); fl.Visible := false; fl.Parent :=
sender;
fl.Directory := directory; fl.Refresh;
dl := TFileListBox.Create(sender); dl.Visible := false; dl.parent :=
sender;
dl.Directory := directory; dl.FileType := [ftDirectory]; dl.Refresh;

  result := TStringList.Create;

  for i := 0 to fl.Count-1 do begin
    if rightstr(fl.Items.Strings[i], 3) = rightstr(ext, 3) then begin
      result.add(Directory + fl.Items.Strings[i]);
    end;
    application.ProcessMessages;
  end;

  if dl.count   3 then begin
    for i := 0 to dl.Count-1 do begin
      if (dl.Items.Strings[i] 
0

Po pierwsze nie doczytałem się nigdzie w pomocy, żeby ta funkcja kopiowała także z podkatalogów, a z twojego kodu coś nie mogę dojść, że wywołuje dla każdego folderu.
Po drugie: proponuję napisać własną funkcję wykorzystującą FindFirst/Next/Close, która będzie chodzić po całej strukturze i kopiować. Jak sam piszesz zawsze wiesz jak to działa (jeżeli działa :) )
Po trzecie: ze StrUtils wykorzystywana jest chyba tylko funkcja IncludeTrailingPathDelimiter, więc możesz ją zastąpić sprawdzając czy ostatni element stringa to '' Jeżeli nie to dodajesz ''.

if Sciezka[Length(Sciezka)] '' then
Sciezka := Sciezka + '';

1 użytkowników online, w tym zalogowanych: 0, gości: 1