Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Mehere Zeilen in der IF-Anweisung


Shadowdragon - Sa 01.03.03 21:49
Titel: Mehere Zeilen in der IF-Anweisung
Folgendes:

Ich habe eine IF-Anweisung, die so aussieht:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
if idftp1.Connected = true then
                DeleteFile(pfad)
                idftp1.Get('chatlog.txt' , pfad)
                memo1.clear
                memo1.Lines.LoadFromFile(pfad)
else
                DeleteFile(pfad)
                idftp1.Connect
                idftp1.Get('chatlog.txt' , pfad)
                memo1.clear
                memo1.Lines.LoadFromFile(pfad);
end;


Jetzt mal die Unhandlichkeit ausser Acht gelassen :wink:
Jedesmal, wenn ich das Programm starten will, beschwert es sich, dass die Semikoli (?) fehlen.... wenn ich sie jedoch setze, beschwert sich das ELSE, dass vor ihm kein Semikolon stehen darf!

Kann es sein, dass IF-Anweisungen nur 1 Zeile verarbeiten können? (was aber reichlich beschränkt wäre)
...oder was mache ich da falsch?

Danke!


UGrohne - Sa 01.03.03 21:55
Titel: Re: Mehere Zeilen in der IF-Anweisung
Shadowdragon hat folgendes geschrieben:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
if idftp1.Connected = true then
                DeleteFile(pfad)
                idftp1.Get('chatlog.txt' , pfad)
                memo1.clear
                memo1.Lines.LoadFromFile(pfad)
else
                DeleteFile(pfad)
                idftp1.Connect
                idftp1.Get('chatlog.txt' , pfad)
                memo1.clear
                memo1.Lines.LoadFromFile(pfad);
end;


is logisch: Erstens führst Du nur eine Anweisung nach dem then aus, wenn Du einen Anweisungsblock ausführen lassen willst, musst du begin und end setzen.
Zweitens: Das Semikolon wird nur vor dem else weggelassen, sonst brauchst Du's immer.
heißt im Endeffekt, er weiß gar nicht , was nach dem then alles ausgeführt werden soll. bzw. er (ioch nehm jetzt nur die erste if-Funktion) führtdas Deletfile aus, wenn idftp1 connected ist, aber was danach kommt, macht er auf JEDEN Fall, genauso bei der zweiten if-Bedingunge.

Korrekt müsste es folgendermaßen heißen:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
if idftp1.Connected = true then begin
                DeleteFile(pfad);
                idftp1.Get('chatlog.txt' , pfad);
                memo1.clear;
                memo1.Lines.LoadFromFile(pfad);
                end
else begin
                DeleteFile(pfad);
                idftp1.Connect;
                idftp1.Get('chatlog.txt' , pfad);
                memo1.clear;
                memo1.Lines.LoadFromFile(pfad);
                end;


Ich hoffe, Du siehst den Unterschied. Nur vor dem else kein Semikolon

Gruß


BungeeBug - Sa 01.03.03 21:56

nop es gehen auch mehr

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
if idftp1.Connected = true then
         BEGIN  <--- WICHTIG
                DeleteFile(pfad)
                idftp1.Get('chatlog.txt' , pfad)
                memo1.clear
                memo1.Lines.LoadFromFile(pfad)
          END <- AUCH WICHTIG ohne ";"
else
          BEGIN <-- GENAU SO WICHTIG 
                DeleteFile(pfad)
                idftp1.Connect
                idftp1.Get('chatlog.txt' , pfad)
                memo1.clear
                memo1.Lines.LoadFromFile(pfad);
          END; <-- Noch wichtiger ... MIT ";"
end;

MfG BungeeBug

@ UGrohen ... wenn ich dich kriege ... du sniperst doch nur nach meinen Beiträgen um dann schneller zu antworten :P


Shadowdragon - Sa 01.03.03 21:58

Ihr seid die Retter in der Not,
im Arktismeer mein Gummiboot :D :D

DANKE! Hätt ich selbst drauf kommen müssen >_>

((Bin zuviel an QBASIC gewöhnt....das waren noch Zeiten :D))


UGrohne - Sa 01.03.03 21:58

Ätsch war schneller :P
Auch, wenn cih mir net viel Zeit zum Ausformulieren genommen hab.

Gruß an die Bugs *g* haste wieder Deine Mails bekommen?