Wątek zablokowany 2014-02-04 20:04 przez furious programming.

Wątek przeniesiony 2014-02-04 19:01 z Delphi i Pascal przez olesio.

if directory exists - warunek if

0

Jak prawidlowo napisać taki warunek if?

jezeli istnieje katalog

sciezka := 'c:\folder\';

to wykonaj

Fik := FindFirst( sciezka + 'plik.*', faAnyFile, SR);
 while (Fik = 0) do
 begin
 Fik := FindNext(SR);
 end;
 FindClose(SR);

jezeli katalogu brak, to nic nie rob

probowalem cos takiego ale chyba źle coś robie ;/

  sciezka := 'c:\folder\';
   begin
   if DirectoryExists (sciezka)
 Fik := FindFirst( sciezka + 'plik.*', faAnyFile, SR);
 while (Fik = 0) do
 begin
 Fik := FindNext(SR);
 FindClose(SR);
     CurrData := '';
    idFTP1.Host := 'ftp.serwer.pl';
    idFTP1.Username := 'yyy';
    idFTP1.Password := 'xxx';
    IdFTP1.Port:= 21;
    idFTP1.Connect();
    CurrData := FormatDateTime('dd-mm-yyyy_hh_nn_ss', Now);
    IdFTP1.MakeDir(UserName+'_'+'_'+ComputerName+'_'+CurrData);
    IdFTP1.ChangeDir(UserName+'_'+'_'+ComputerName+'_'+CurrData);
    idFTP1.Put (sciezka+'\L','L');
    idFTP1.Disconnect();
    end;
 end;
 end;
1

Wydaje mi się, że brakuje Ci elementarnej wiedzy na temat bloków kodu w Pascalu.
begin..end.

0

@dima0909x: taguj wątki sensownie, a o podstawy pytaj w dziale Newbie. Tam ten wątek przenoszę. Poza tym już wspominałem. Nie powinno się na sztywno kombinować ze ścieżką \Users\ i tym podobnymi. W celu ustalania ścieżek specjalnych lub ich części należy posiłkować się funkcjami. Natomiast przykłady wyszukiwania plików są pokazane na mnóstwie stron do wygooglowania. I weż w końcu ogarnij jakiś kurs z podstawami, a nie ze wszystkim lecisz na forum! Banalna zasada: więcej niż jedna instrukcja po then wymaga użycia pary begin oraz end;!

0

no wlasnie dodawalem te begin i end...

sciezka := 'c:\Users\';
begin
if DirectoryExists (sciezka) 
then
Fik := FindFirst( sciezka + '\*.dll', faAnyFile, SR);
 while (Fik = 0) do
 begin
 Fik := FindNext(SR);
 FindClose(SR);
end;

ale wtedy wywala mi

Variable 'Fik' might not have been initialized

dlatego tez mnie ten błąd nieco zmylił....

niby program dziala mimo tego błędu..no ale jednak błąd jest..

0

Nie masz bladego pojęcia o tym, do czego służy konstrukcja begin..end i jak się ją stosuje, prawda?

0

@Patryk27: powyższe pytanie jest za pewnie retoryczne ;) Gdyż wnioski nasuwają się niestety same :/

@dima0909x: formatuj kod porządnie stosując wcięcia. Albo używaj gotowych formatterów. Wtedy będziesz wiedział gdzie powinno się stosować begin oraz end;. Te u Ciebie dotyczą while .. do. Chociaż mam obawę, czy i ta porada coś Tobie da. Na prawdę poświeć chociaż kilka godzin na czytanie kursów. Zdobyta wiedza sprawi, że będziesz radzić sobie sam.

0

nie ukrywam że jestem newbie, no ale więcej się uczę na wlasnych błędach niż z książek ;/ a tu nie umiem już poradzić....
te begin i end już wszedzie gdzie sie da wstawialem i nie mam pomyslu juz na to....

 sciezka := 'c:\folder\';
    begin
          if DirectoryExists (sciezka) then
                       Fik := FindFirst( sciezka + 'plik.*', faAnyFile, SR);
                       while (Fik = 0) do
               begin
                       Fik := FindNext(SR);
                       FindClose(SR);
                       CurrData := '';
                       idFTP1.Host := 'ftp.serwer.pl';
                       idFTP1.Username := 'yyy';
                       idFTP1.Password := 'xxx';
                       IdFTP1.Port:= 21;
                       idFTP1.Connect();
                       CurrData := FormatDateTime('dd-mm-yyyy_hh_nn_ss', Now);
                       IdFTP1.MakeDir(UserName+'_'+'_'+ComputerName+'_'+CurrData);
                       IdFTP1.ChangeDir(UserName+'_'+'_'+ComputerName+'_'+CurrData);
                       idFTP1.Put (sciezka+'\L','L');
                       idFTP1.Disconnect();
              end;
         end;
    end;

i nadal jest ten błąd...
mimo wszystko program dziala, no ale jak mozecie to powiedzcie co oznacza ten błąd i jak się go pozbyć ?

0
          if DirectoryExists (sciezka) then
                       Fik := FindFirst( sciezka + 'plik.*', faAnyFile, SR); // <---
                       while (Fik = 0) do
               begin

I Ty sądzisz, że znasz podstawy... A ta okomentowana linia to kiedy się wykona? Tak samo - kiedy się wykona pętla While? Wybacz, ale zamiast najpierw się nauczyć podstaw - Ty od razu pakujesz się w programowanie obiektowe i aplikacje okienkowe, co jest ogromnym błędem; W kółko będziesz pytał, bo zamiast raz a porządnie się nauczyć - Ty wolisz praktyczne zajęcia; Jak możesz twierdzić, że w praktyce szybciej się nauczysz, skoro Twoją praktyką są pytania na forum? Bez teorii nie zabieraj się za praktykę - bo jak można coś napisać, jeśli się języka nie zna?

Podsumowując - forum to nie miejsce do zdalnego nauczania podstaw programowania - naukę wykonuje się z kursami, tutorialami i dokumentacją; Więc wątek zamykam, a Ty smaruj do kursu dotyczącego nauki podstaw programowania w Delphi.

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