Einzelnen Beitrag anzeigen

Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Unrealistischster Fehler aller Zeiten.

  Alt 7. Jan 2005, 16:38
Irgendwo ist das ganze fürn Ar***.
Hier mal der erste teil deines Quelltextes.
Delphi-Quellcode:
procedure TForm1.MailsAbrufen;
var
//Integers
intIndex,i:integer;
begin
  try
  idPOP31.Connect;
  except
  MessageDlg('Es konnte keine Verbindung zum Postfach hergestellt werden. Bitte überprüfen Sie alle Einstellungen.',mtInformation,[mbOk],0);
  end;
  MailCount := idPOP31.CheckMessages;
  idPOP31.Retrieve(1,idMessage1);
[...]
Wenn also das Connect fehl schlägt kommt eine Meldung und anschließend wird trotzdem versucht die nachrichten abzurufen Wie soll das gehen? Wenn keine Verbindung hergestellt werden kann so können auch keine Nachrichten abgerufen werden.

[OT]
Laut Delphistandard heißt es auch nicht
Delphi-Quellcode:
for [...] do begin
  //Anweisungen
end;

if [...] then begin
  //Anweisungen
end;
sondern
Delphi-Quellcode:
for [...] do
begin
  //Anweisungen
end;

if [...] then
begin
  //Anweisungen
end;
So sieht man wenigstens auf anhieb wo das end dazu gehört (denn zu einem "for" oder "if" gehört nicht zwingend ein "end" und es ist nicht grad schön zu lesen wenn ich immer erst das ende der zeile suchen muss (eventuell sogar scrollen) um zu wissen ob ein "begin" zur anweisung gehört oder ob es eine einzilge Anweisung ist
[/OT]

wo liegt eigentlich der Sinn von
Delphi-Quellcode:
if IdMessage1.MessageParts.Count <> 0 then //<==
begin
  for intIndex := 0 to (IdMessage1.MessageParts.Count-1) do
  begin
    if idMEssage1.MessageParts.Items[intIndex] is TIdText then
    begin //bei Einzelanweisungen ist "begin end" überflüssig
      mailBody := TidText(IdMessage1.MessageParts.Items[intIndex]).Body.Text;
    end
    else if idMEssage1.MessageParts.Items[intIndex] is TIdAttachmentFile then
    begin
      attFileName := (idMEssage1.MessageParts.Items[intIndex] as tIdAttachmentFile).Filename;
      TidAttachmentFile(idMessage1.MessageParts.Items[intIndex]).SaveToFile(path+'\tmp\'+attFileName);
      ID2 := ID2+1;
      anhang_id_list.Add(IntToStr(ID2));
      anhang_list.Add(attFileName);
    end;
  end;
end
else if IdMessage1.MessageParts.Count = 0 then //<==
begin //bei Einzelanweisungen ist "begin end" überflüssig
  MailBody := idMessage1.Body.Text;
end;
Wenn do oben auf ungleich 0 prüfst musst du unten kein "else if gleich 0" machen, da reicht auch ein einfaches else (sorry das ich den source bei dem beispiel mal bissl anders formatiert hab, aber sonst sieht man überhaupt ni durch was wozu gehört)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat