ďťż

Ładny brzuch

Hello
mam kod :
procedure TForm1.Szukaj(katalog: string; const plik, roz: ShortString); const ext = '*.*'; var SR: TSearchRec; fname: string; begin if katalog[length(katalog)] <> '\' then  katalog := katalog + '\'; //dopisujemy znak '\' jesli go nie ma if FindFirst(katalog + ext, faAnyFile, SR) <> 0 then  EXIT; //jesli nie ma plików opuszczamy procedurę while FindNext(SR) = 0 do begin  if ((sr.Attr and faDirectory) <> 0) and ( SR.Name <> '..') then    szukaj(katalog + SR.Name + '\', plik, roz) //jesli plik jest katalogiem to szukamy w tym katalogu  else  begin   {kolejno warunki: jesli nazya jest różna od '..' i '.' oraz rozszerzenie zgadza sie temu które podalismy a takze nazwa pliku z rozszerzeniem jest równa aktualnie sprawdzanemu plikowi}    if (SR.Name <> '..') and (Sr.Name <> '.') and    (lowercase(ExtractFileExt(SR.Name)) = '.' + roz) and    (lowercase(plik + '.' + roz) = lowercase(extractfilename(SR.Name))) then    begin   SetLength(configs,Length(configs)+1);    configs[High(configs)] := katalog + SR.Name;    end;  end; Application.ProcessMessages; end; end;

i wywolanie funkcji

procedure TForm1.FormCreate(Sender: TObject); var i,l,h : integer; begin Szukaj('C:\','configs','ini'); l := Low(configs); h := High(configs); i := 1; for l := l to h do begin Otworz(configs[i]); i := i + 1; end; end;

Probuje to uruchomic pierwsze otwiera a jak znajduje drugie (mam na dysku 2 pliki configs.ini) to wywala blad
Acces violation at address 00404810 in module 'szukacz.exe'. Read of address 7461642A.

Poprostu mnie juz trafia, probowalem roznych metod i nic :(
Kod moim zdaniem jest pawidlowy, ale jestem poczatkujacy wiec nie wiem :(

z gory dzieki
Pozdro :D
Użytkownik d35tr0y3r edytował ten post 07 styczeń 2006, 13:48


mi sie nie podoba ten fragment ...
procedure TForm1.FormCreate(Sender: TObject); var i,l,h : integer; begin Szukaj('C:\','configs','ini'); l := Low(configs); h := High(configs); i := 1; for l := l to h do begin Otworz(configs[i]); i := i + 1; end; end;

moze dlatego ze jest for l:= l? nie wiem .. pozatym po co tylke kombinowania? :o
//a moze dlatego ze tablice sie indexuje od 0 a nie od 1? :) ale lepiej uzyj tego drugiego kodu ktory podalem :)
procedure TForm1.FormCreate(Sender: TObject); var i: integer; begin Szukaj('C:\','configs','ini'); for i := low(configs) to high(configs) do Otworz(configs[i]); end;

hmm nie wywala juz bledow, ale dalej nie otwiera dwoch :(


hmm nie wywala juz bledow, ale dalej nie otwiera dwoch :(

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •