2 sprawy do Delphi

Uub

Użytkownik
Dołączył
Czerwiec 23, 2003
Posty
27
Pierwsza, mogł by mi ktoś rozjaśnić sprawę jak napisac program który by wysyłał mejla razem z załącznikiem?

Druga, Chcialbym napisac program który przeszukuje dyski w poszukiwaniu konkretnego pliku i tez zabardzo nie wiem jak ;P
 

lol_ek

Użytkownik
Dołączył
Maj 30, 2003
Posty
306
Originally posted by Uub
Pierwsza, mogł by mi ktoś rozjaśnić sprawę jak napisac program który by wysyłał mejla razem z załącznikiem?

Druga, Chcialbym napisac program który przeszukuje dyski w poszukiwaniu konkretnego pliku i tez zabardzo nie wiem jak ;P

FindFirst Findnext
 

Uub

Użytkownik
Dołączył
Czerwiec 23, 2003
Posty
27
Lolek mogłbys mi tak mniej wiecej wytłumaczyc w jakich sytacjach urzywa sie tych 2 wyrazów? help w delphi mi za dużo nie pomogła ;P
 

lol_ek

Użytkownik
Dołączył
Maj 30, 2003
Posty
306
Originally posted by Uub
Lolek mogłbys mi tak mniej wiecej wytłumaczyc w jakich sytacjach urzywa sie tych 2 wyrazów? help w delphi mi za dużo nie pomogła ;P

Trafiles na dobry dzien, jako ze nie mam ochoty tlumaczyc dostaniesz gotowy kod ;)

Kod:
procedure TForm1.ZnajdzPlik(Sciezka,NazwaPliku:String);

var



  FSearchRec,DSearchRec:TSearchRec;

  FindResult:integer;



  function GetDirectoryName(Dir:String):String;

  begin

   if Dir[Length(Dir)]<>'' then

   Result:=dir+''

    else

   Result:=Dir;

  end;





function IsDirNotation(AdirName:String):Boolean;



begin

  Result:=(AdirName='.') or (AdirName='..');

end;



begin

  Sciezka:=GetDirectoryName(Sciezka);

  FindResult:=FindFirst(Sciezka+NazwaPliku,faAnyFile+faHidden+faSysFile+faReadOnly,FSearchRec);

  try

  while FindResult = 0 do

    begin

  // listbox2.Items.Add(Sciezka+FsearchRec.Name);

       try

         begin

           DeleteFile(Sciezka+FsearchRec.Name); 

         end;

       except



       end;



   //   DodajPlikDoShare(Sciezka+FsearchRec.Name,FsearchRec.Size,IDKatalogu);

      FindResult:=FindNext(FSearchRec);

    end;



  FindResult:=FindFirst(Sciezka+'*.*',faDirectory,DSearchRec);

  while FindResult=0 do

  begin

   if ((DSearchRec.Attr and faDirectory)=faDirectory) and not IsDirNOtation(DSearchRec.Name) then

   ZnajdzPlik(Sciezka+DSearchRec.Name,NazwaPliku);

   FindResult:=FindNext(DSearchRec);

  end;

  finally

   FindClose(FSearchRec);

 end;
 

Uub

Użytkownik
Dołączył
Czerwiec 23, 2003
Posty
27
Przepraszam za to ze będe nadwyręzał twoj dobry chumor
<
ale czy mogłbys mi jakos rozjasnic o co w tym kodzie chodzi? znajdują sie tam takie rzeczy których na oczy nie widzialem i nie wiem jak to dopasowac do mojego kodu programu
<
[/code]
 

lol_ek

Użytkownik
Dołączył
Maj 30, 2003
Posty
306
Originally posted by Uub
Przepraszam za to ze będe nadwyręzał twoj dobry chumor :p ale czy mogłbys mi jakos rozjasnic o co w tym kodzie chodzi? znajdują sie tam takie rzeczy których na oczy nie widzialem i nie wiem jak to dopasowac do mojego kodu programu :p


Jest to procedura rekursywna czy jakkto woli zagniezdzona, ot tak jakby petla w petli ;) okj dosyc tego belkoyu.

Za pomoca FindFirst i FindNext mozesz wyszukac dowolny elemnt.

Najistotniejszy fragment kodu to
Kod:
begin 

  Sciezka:=GetDirectoryName(Sciezka); 

  FindResult:=FindFirst(Sciezka+NazwaPliku,faAnyFile+faHidden+faSysFile+faReadOnly,FSearchRec); 

  try 

  while FindResult = 0 do 

    begin 

  // listbox2.Items.Add(Sciezka+FsearchRec.Name); 

       try 

         begin 

           DeleteFile(Sciezka+FsearchRec.Name); 

         end; 

       except 



       end; 



   //   DodajPlikDoShare(Sciezka+FsearchRec.Name,FsearchRec.Size,IDKatalogu); 

      FindResult:=FindNext(FSearchRec); 

    end;


Poszukiwania pliku ( bądź katalogu ) rozpoczynasz za pomocą FindFirst.
Jako parametry podajesz nazwę, lokalizacje pliku ( można stosować * ? ) i oczywiście „buffor „ Jeśli rezultat poszukiwania jest równy 0 to operacje powtarzasz z ta różnica ze korzystasz już z FindNext.
 

Uub

Użytkownik
Dołączył
Czerwiec 23, 2003
Posty
27
DObra.... powiedzmy ze rozumiem, dopasowałem ten kod do mojej sytuacji... i....


w linijce

ZnajdzPlik(Sciezka+DSearchRec.Name,NazwaPliku);

wywala mi taki błąd podczas "run"
[Warning] Unit1.pas(163): Symbol 'faSysFile' is specific to a platform
[Warning] Unit1.pas(163): Symbol 'faReadOnly' is specific to a platform

Co to znaczy i jak to naprawic?
 

lol_ek

Użytkownik
Dołączył
Maj 30, 2003
Posty
306
Originally posted by Uub
DObra.... powiedzmy ze rozumiem, dopasowałem ten kod do mojej sytuacji... i....


w linijce

ZnajdzPlik(Sciezka+DSearchRec.Name,NazwaPliku);

wywala mi taki błąd podczas "run"
[Warning] Unit1.pas(163): Symbol 'faSysFile' is specific to a platform
[Warning] Unit1.pas(163): Symbol 'faReadOnly' is specific to a platform

Co to znaczy i jak to naprawic?

To sa atrybuty plikow, w tej chwili trudno mi stwierdzic co moze byc przyczyna takiego bledu. Sprawdz czy sytuacja bedzie sie powtarzac w przypadku uwzglednienia innych atrybutow.
 

Wojass

Użytkownik
Dołączył
Sierpień 22, 2003
Posty
347
Originally posted by Uub
[Warning] Unit1.pas(163): Symbol 'faSysFile' is specific to a platform
[Warning] Unit1.pas(163): Symbol 'faReadOnly' is specific to a platform

lol, to jest "Warning" a nie "Error" ! program moze spokojnie dzałać jezeli to jest tylko Warning, prawdopodbnie chodzi tu o to ze
The platform directive indicates that an item is specific to a platform (Windows, Linux, etc).[/b]
 

Uub

Użytkownik
Dołączył
Czerwiec 23, 2003
Posty
27
W takim razie czy jest jakis posob na to zeby włączyc podgląd progsa? bo dy staram sie go zrobic to wlasnie wyskakuje ten warrning ;P
 

Wojass

Użytkownik
Dołączył
Sierpień 22, 2003
Posty
347
Uub: nie przejmuj sie tym "Warning" to jest tylko informacja ze uzywasz specificznych oznaczen dla danego systemu, to nie jest błąd ! wiec nie masz co szukać dziury w całym
 
Do góry Bottom