Autor Beitrag
Shadowdragon
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 143

Win 2000
Delphi 6 Pers., Delphi 7
BeitragVerfasst: Sa 01.03.03 22:49 
Folgendes:

Ich habe eine IF-Anweisung, die so aussieht:
ausblenden 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!

_________________
Ein Programm gleicht dem Prinzip von Jenga:
Viele Bestandteile, wird nach oben hin immer besser, nach unten hin immer instabiler und wenn man was falsch macht klappt der ganze Mist zusammen.
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Sa 01.03.03 22:55 
Shadowdragon hat folgendes geschrieben:

ausblenden 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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 901



BeitragVerfasst: Sa 01.03.03 22:56 
nop es gehen auch mehr
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 143

Win 2000
Delphi 6 Pers., Delphi 7
BeitragVerfasst: Sa 01.03.03 22: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))

_________________
Ein Programm gleicht dem Prinzip von Jenga:
Viele Bestandteile, wird nach oben hin immer besser, nach unten hin immer instabiler und wenn man was falsch macht klappt der ganze Mist zusammen.
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Sa 01.03.03 22: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?