AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Besprechnungsanfrage (iCalendar)
Thema durchsuchen
Ansicht
Themen-Optionen

Besprechnungsanfrage (iCalendar)

Ein Thema von tdroese · begonnen am 18. Nov 2013 · letzter Beitrag vom 26. Nov 2013
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.583 Beiträge
 
Delphi 12 Athens
 
#1

AW: Besprechnungsanfrage (iCalendar)

  Alt 23. Nov 2013, 23:14
Du solltest drinngend nochmal einen Kurs über OOP belegen.

Wozu gibt es diese globale Variable CD?
Wenn, dann würde diese maximal als Feld in die Form gehören.
Aber eigentlich wird diese Variable nur in Button1Click verwendet, also gehört sie dort auch rein.

Und schon würde dir auffallen, daß du hier total Mist gebaut hast.
Delphi-Quellcode:
TCalendarData.CreateInvitation(IdMessage: TIdMessage);
begin
  with cd.cdBody do
Genauso wie einem etwas komisch vorkommen sollte, wenn ma die Variable Form1, bei soeinen einfachen Code aus nur einer Unit/Form, niemals irgendwo verwendet werden sollte (außer es ist wirklich notwendig, was es aber fast niemals ist)

Also, wieso wird da innerhalb der Klasse TCalendarData auf eine externe Variable (CD) zugegriffen, anstatt auf seine eigenen Felder?
Die globale Variable CD entspricht hier zwar zufällig mal der eigenen Instanz, aber das muß nicht immer so sein.

Auch wird die Variable cdBody nur in CreateInvitation verwendet, womit Diese auch nur in dieser Methode deklariert sein sollte.
Obwohl man da eigentlich auch direkt IdMessage.Body verwenden könnte.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (23. Nov 2013 um 23:18 Uhr)
  Mit Zitat antworten Zitat
tdroese

Registriert seit: 12. Nov 2013
7 Beiträge
 
#2

AW: Besprechnungsanfrage (iCalendar)

  Alt 26. Nov 2013, 12:13
Hallo Himitsu,

vielen Dank für den Hinweis und auch all die anderen Tipps vorab. Ich mag klare Worte .

Habe leider noch nie einen Kurs in Delphi belegt (sieht man offensichtlich ).

Aber man kann nur besser werden, also danke ich Dir für den Hinweis.

Einen schönen Tag wünscht,

Thomas
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.583 Beiträge
 
Delphi 12 Athens
 
#3

AW: Besprechnungsanfrage (iCalendar)

  Alt 26. Nov 2013, 14:09
Pssst, nicht erschrecken, aber sogesehn hatte ich auch nie einen Kurs gehabt und es stecken einfach nur viele Jahre an guten oder schlechten Erfahrungen dahinter.
Vieles selbst beigebracht (ausprobieren, bis es irgendwie klappt), in der DP auch noch viel gelernt und über die Zeit auch vieles "falsch", bzw. ungünstig gelöst.
Durch die DP, DT und Co. auch noch Dinge erfahren, wie man etwas besser lösen könnte/sollte.
Also keine Sorge, jeder fing mal klein an.

So hatte/hab ich auch gerne große funktionen gehabt, aber es macht sich einfach besser, wenn man sowas aufteilt.
z.B. wie Nachfolgend.

So hat man je eine Teilfunktionalität (Mail zusammenbauen, Verschlüsselung und Senden in Funktionen getrennt, die fast komplett auf Bildschirm passt).
Und jetzt hätte man noch genug Platz, um z.B. Funktionen für Übertragungskomprimierungen oder Proxies dazwischenzuschieben.

Das du dir extra Kommentare einbauen mußt, um viele Seiten später noch zu erkennen wozu ein End gehört, sollte dir da etwas zu denken geben.
PS: end;//BreakLines hast du dabei ganz übersehen ... vermutlich hieß die Funktion früher mal so und nun hast du auch noch einen "verwirrenden" Kommentar im Code.
Kommentare sind wichtig, aber zuviele, nutzlose oder redundante Informationen sind eher hinderlich.

Delphi-Quellcode:
procedure TCalendarData.SendCalendarRequest;
var
   SMTP: TIdSMTP;
   IdMessage: TIdMessage;
begin
   IdMessage := TIdMessage.Create(nil);
   try
     CreateMessage(IdMessage);
     SMTP := TIdSMTP.Create(nil);
     try
       InitAuthentification(SMTP);
       SendMail(SMTP);
     finally
       SMTP.Free;
     end;
   finally
     IdMessage.Free;
   end;
end;
Nochmal als Kommentare davor, was wo drinnen wäre:
Delphi-Quellcode:
procedure TCalendarData.SendCalendarRequest;
var
   SMTP: TIdSMTP;
   IdMessage: TIdMessage;
begin
   IdMessage := TIdMessage.Create(nil);
   try
     //with IdMessage do
     //begin
     // //Header setzen
     //...
     //CreateInvitation(IdMessage);
     CreateMessage(IdMessage);
     SMTP := TIdSMTP.Create(nil);
     try
       //if cdSSLConnection = true then
       //begin
       // SSLHandler := TIdSSLIOHandlerSocketOpenSSL.Create(SMTP);
       //...
       // SMTP.AuthType := satNone;
       //end;
       InitAuthentification(SMTP);
       //SMTP.Host := cd.cdHost;
       //...
       // SMTP.Disconnect;
       //end;
       SendMail(SMTP);
     finally
       SMTP.Free;
     end;
   finally
     IdMessage.Free;
   end;
end;
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (26. Nov 2013 um 14:11 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz