![]() |
.self oder nicht (aus "SMTP über Strato")
Moin,
ich trenne das Thema mal aus meinem SMTP-Thread raus um das ganze nicht zu verwässern: Zitat:
das sagst Du mir schon seid Jahren - und ich glaube Dir (wirklich) auch, aber ...
Delphi-Quellcode:
-> Keine Fehlermeldung
procedure Verbinden;
begin Form1.IdSMTP1.AuthType := satDefault; // simpler Login ohne Authentifizierung Form1.IdSMTP1.Host := 'smtp.strato.de'; Form1.IdSMTP1.Port := 465; Form1.IdSMTP1.UseTLS := utUseRequireTLS; // mit SSL -> Port dann in aller Regel 587 usw.
Delphi-Quellcode:
-> da werden sofort die ersten beiden als fehlerhaft markiert.
procedure Verbinden;
begin IdSMTP1.AuthType := satDefault; // simpler Login ohne Authentifizierung IdSMTP1.Host := 'smtp.strato.de'; Form1.IdSMTP1.Port := 465; Form1.IdSMTP1.UseTLS := utUseRequireTLS; // mit SSL -> Port dann in aller Regel 587 usw. Erste Zeile: E2003 undeklarierter Bezeichner "IdSMTP1" in Zeile 88 Zweite Zeile: E2066 Operater oder Seikolon fehlt in Zeile 89
Delphi-Quellcode:
-> da werden sofort die ersten beiden als fehlerhaft markiert.
procedure Verbinden;
begin self.IdSMTP1.AuthType := satDefault; // simpler Login ohne Authentifizierung self.IdSMTP1.Host := 'smtp.strato.de'; Form1.IdSMTP1.Port := 465; Form1.IdSMTP1.UseTLS := utUseRequireTLS; // mit SSL -> Port dann in aller Regel 587 usw. erste Zeile: E2003 undeklarierter Bezeichner "self" in Zeile 88 Erste Zeile: E2066 Operater oder Seikolon fehlt in Zeile 89 Zweite Zeile: E2066 Operater oder Seikolon fehlt in Zeile 89 Und jetzt weiß ich nicht woran das liegt ... aber das es eben mit dem "Form1." oder in dem anderen Fall dem "MailForm." davor klappt ! Wenn Du mir aber sagen kannst was ich falsch mache dann lerne ich es endlich ! Und das soll jetzt keine Verar*** sein sondern wirklich der Wille zu verstehen was ich falsch mache. Gruss Hans |
AW: .self oder nicht (aus "SMTP über Strato")
Der Hinweis bezieht sich vermutlich auf das erste Codebeispiel im ersten Beitrag, das so anfängt:
Delphi-Quellcode:
function TMailForm.SendeMail(MailEmpfaenger, CCListe, Betreff, Anhang :string; Body :TStringList; MailAbsender, MailPasswort, MailServer: String; MailPort: Integer) : boolean;
var **iAttachment : TIdAttachment; **Erfolg: Boolean; begin **(* Connect mit Server *) **MailForm.IdSMTP1.AuthType := satDefault; // simpler Login ohne Authentifizierung **MailForm.IdSMTP1.Host := MailServer; **MailForm.IdSMTP1.Port := MailPort; Und das sieht so aus als ob das gemacht wird, was man auf jeden Fall vermeiden sollte. (Zugriff innerhalb der Methode einer Form-Instanz auf die 'globale' Instanz-Variable)
Delphi-Quellcode:
Das ist anderer Code, eine Methode die nicht zur Form-Klasse gehört. Daher ist es hier richtig und notwendig, irgendwie auf die Form-Instanz zuzugreifen. Es sind zwei verschiedene Fälle.
procedure Verbinden;
begin **Form1.IdSMTP1.AuthType := satDefault; // simpler Login ohne Authentifizierung **Form1.IdSMTP1.Host := 'smtp.strato.de'; **Form1.IdSMTP1.Port := 465; **Form1.IdSMTP1.UseTLS := utUseRequireTLS; // mit SSL -> Port dann in aller Regel 587 **usw. |
AW: .self oder nicht (aus "SMTP über Strato")
Zitat:
DANKE - ich glaube jetzt habe ich es verstanden !! Schönen Abend Hans |
AW: .self oder nicht (aus "SMTP über Strato")
Problem ist, dass du ja schon in der Klasse drin bist.
Dort hast du Self explizit oder implizit (wenn man es nicht angibt), um auf die aktuelle Instanz zuzugreifen. In der globalen Variable muß aber nicht die Instanz drin stehen, in welcher du gerade drin bist. * z.B. wenn man mehrere Instanzen der Klasse hat * Oder wenn während des Erstellens und Freigebens die Variable (noch) nicht auf diese Instanz zeigt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:30 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