Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem mit TStringlist und String (https://www.delphipraxis.net/88054-problem-mit-tstringlist-und-string.html)

Stadtfuchs 9. Mär 2007 12:51


Problem mit TStringlist und String
 
hi,

ich möchte einen String der über 2 (oder mehr) Zeilen geht in eine Stringlist schreiben.
Das tue ich weil ich diese Stringlist später an eine SMTP Komponente übergeben muss (SMTP.ToAddress) welche nur Stringlisten akzeptiert.
Den String der in die Stringlist soll ziehe ich mir aus einem Registryeintrag heraus.
Dort stehen als Test zwei Email Adressen die durch Returns getrennt sind.
Wenn ich die in einen String auslese und den per Showmessage anzeige zeigt der mir auch brav die erste Adresse in der ersten Zeile und die zweite in der zweiten Zeile.
Aber sobald ich den String dann in eine Stringlist schreiben will zerlegt es mein Programm.
Weiss hier einer Rat?

mfg

hsg 9. Mär 2007 12:56

Re: Problem mit TStringlist und String
 
Stringlist ist überhaupt erzeugt?

An dieser Stelle wäre ein wenig Code sinnvoll, damit wir sehen können, was du gemacht hast.

Stadtfuchs 9. Mär 2007 13:01

Re: Problem mit TStringlist und String
 
Delphi-Quellcode:
// ########## Werte aus der Registry auslesen ##################################
procedure TForm1.Auslesen;
var
  regist: TRegistry;
  i: WideChar;
begin
  regist := TRegistry.Create;
  regist.RootKey := HKEY_LOCAL_MACHINE;
  if regist.OpenKey('SOFTWARE\MES', true) = true then
    for i := 'A' to 'Z' do
      Buchstabe := i;
      Mail := regist.ReadString(Buchstabe + 'eMail');
      Wiederholungen := regist.ReadInteger(Buchstabe + 'Anzahl');
      {try
        Kopieren; // Testdatei wird kopiert
      Except
        EMail;
      End;}
  regist.Free;
end;

// ########## Verbindung zum Host herstellen ###################################
procedure TForm1.Button1Click(Sender: TObject);
var
  ToAddressList: TStringList;
begin
  button1.Enabled := false;
  Auslesen;
  smtp.PostMessage.Date := DateToStr(date());
  ToAddressList.Clear;
  ToAddressList.Text := Mail;
  smtp.PostMessage.ToAddress.AddStrings(ToAddressList);
  if pop.Connected = true then
    pop.Disconnect
  else
    begin
      try
        pop.Connect;
      except
        showmessage('Keine Verbindung zu POP!');
      end;
    end;
  if smtp.Connected = true then
    smtp.disconnect
  else
    begin
      try
        smtp.Connect;
      except
        showmessage('Keine Verbindung zu SMTP!');
      end;
    end;
end;

// ########## Nachricht absenden sofern Verbindung besteht #####################
procedure TForm1.smtpConnect(Sender: TObject);
begin
  try
    smtp.SendMail;
  except
    showmessage('Senden der Mail fehlgeschlagen!');
  end;
  button1.Enabled := true;
  try
    smtp.Disconnect;
  except
    showmessage('Konnte nicht von SMTP trennen!');
  end;
  try
    pop.Disconnect;
  except
    showmessage('Konnte von POP nicht trennen!');
  end;
end;

Gruber_Hans_12345 9. Mär 2007 13:03

Re: Problem mit TStringlist und String
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  ToAddressList: TStringList;
begin
  button1.Enabled := false;
  Auslesen;
  smtp.PostMessage.Date := DateToStr(date());
  ToAddressList := TStringList.Create   <<<< Erzeugen
  ToAddressList.Clear;
  ToAddressList.Text := Mail;
 
 ...
  ToAddressList.Free;      <<<< Freigeben

wobei sollte eigentlich auch so gehn :

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  button1.Enabled := false;
  Auslesen;
  smtp.PostMessage.Date := DateToStr(date());
  smtp.PostMessage.ToAddress.Text := Mail;
  ...

Stadtfuchs 9. Mär 2007 13:11

Re: Problem mit TStringlist und String
 
ich habe mal beide varianten ausprobiert und bekomme in beiden fällen eine zugriffsverletzung.
es bleibt fehlertechnisch gesehn also leider alles beim alten... :(

marabu 9. Mär 2007 13:23

Re: Problem mit TStringlist und String
 
Herzlich willkommen in der Delphi-PRAXiS, Timo.

Du solltest die genaue Stelle im aktuellen QuellCode bezeichnen, an der die Zugriffsverletzung auftritt.

Von der Strukturierung her geurteilt fehlt in deiner Prozedur Auslesen ein BEGIN-END Codeblock für die FOR-Schleife. Ohne macht das so keinen Sinn. Außerdem würde ich die gefundenen Mail-Adressen gleich dort in die Liste einbauen.

Freundliche Grüße

Stadtfuchs 9. Mär 2007 13:43

Re: Problem mit TStringlist und String
 
problem gelöst es läuft nun so wie es sein soll :-D
besten dank für die hinweise


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz