Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Memo in Stringlist umwandeln (https://www.delphipraxis.net/68021-memo-stringlist-umwandeln.html)

xZise 23. Apr 2006 16:05


Memo in Stringlist umwandeln
 
Wie bekomme aus der Memo eine TStringList?

Delphi-Quellcode:
procedure TFVorschau.BitBtn2Click(Sender: TObject);
begin
  UIni.FIni.SaveIni(MVorschau.{Und was jetzt});
  close;
end;
Delphi-Quellcode:
procedure TFIni.SaveIni(Text : TStringList);
begin
  if SDSave.Execute then
    Text.SaveToFile(SDSave.FileName);
end;
Und TStrings funzt deswegen nicht:

Delphi-Quellcode:
procedure TFIni.SpeichernEinleiten(Sender: TObject);
var
  Text : TStringList;
  i, j : Integer;
begin
  Text := TStringList.Create;
  try
    { Text erstellen }
    // Nach Sections sortieren
    for i := 0 to High(SectionNames) do begin
      // Section setzen
      Text.Add(SectionNames[i]);
      for j := 0 to High(SeItVaValues) do
        // Gehört das Item zur Section?
        if SeItVaValues[j][0] = SectionNames[i] then
          // Items & Values werden zusammengestellt
          Text.Add(SeItVaValues[j][1] + '=' + SeItVaValues[j][2]);
    end;


    if ShowVorschau.Checked then
      UVorschau.FVorschau.Show(Text)
    else
      SaveIni(Text);
  finally
    Text.Free;
  end;
end;
Gibts eine Funktion, die das umwandelt?

Hawkeye219 23. Apr 2006 16:10

Re: Memo in Stringlist umwandeln
 
Hallo,

deklariere deine Variable Text als TStrings und weise ihr die TStringList-Instanz zu.
SaveIni sollte dann natürlich auch einen TStrings-Parameter erhalten.

Schon klappt das mit TMemo.Lines. :wink:

Gruß Hawkeye

xZise 23. Apr 2006 16:17

Re: Memo in Stringlist umwandeln
 
Ähm... welches Text?

Delphi-Quellcode:
procedure TFIni.SaveIni(Text : TStrings);
begin
  if SDSave.Execute then
    Text.SaveToFile(SDSave.FileName);
end;
so?

Dann gibst einen fehler mit SpeichernEinleiten!

fkerber 23. Apr 2006 16:21

Re: Memo in Stringlist umwandeln
 
Hi!

Welchen Fehler gibt es denn?


Ciao Frederic

Hawkeye219 23. Apr 2006 16:22

Re: Memo in Stringlist umwandeln
 
Die lokale Variable Text meinte ich natürlich auch...

Gruß Hawkeye

xZise 23. Apr 2006 16:27

Re: Memo in Stringlist umwandeln
 
Wenn ich das mache meint er: Abstracter Fehler! Und auch mit richtiger Intialisierung

Delphi-Quellcode:
Text := TStrings.Create
Das MVorschau(.Lines) nicht mit dem Übergabeparameter übereinstimmen!
Zitat:

Zitat von fkerber
Welchen Fehler gibt es denn?


Hawkeye219 23. Apr 2006 16:34

Re: Memo in Stringlist umwandeln
 
Sieht der Anfang der Routine auch wirklich so aus?

Delphi-Quellcode:
procedure TFIni.SpeichernEinleiten(Sender: TObject);
var
  Text : TStrings; // <<--- TStrings!
  i, j : Integer;
begin
  Text := TStringList.Create; // <<--- TStringList!
  try
//Edit:

und SaveIni so?

Delphi-Quellcode:
procedure TFIni.SaveIni(Text : TStrings); // <<--- TStrings!
begin
  if SDSave.Execute then
    Text.SaveToFile(SDSave.FileName);
end;

MrKnogge 23. Apr 2006 16:36

Re: Memo in Stringlist umwandeln
 
ja

edit:
Meine Stringlisten definiere ich immer als TStrings, sonst funktionieren sie nie.

xZise 23. Apr 2006 16:38

Re: Memo in Stringlist umwandeln
 
Genial Hawkeye!
Ich dachte bisher folgendes:
Delphi-Quellcode:
var <Variable> : <Typenbezeichnung>
{...}
<Variable> := <Typenbezeichnung d. Variable>.Create
Nun interessiert es mich noch, warum das so geht, wie du das beschrieben hast?

[edit]@ HawkeyeDer Rest war klar! Mich wunderte nur das ich nicht die obige Variante benutzten konnte
@ Knogge: Also ich bin bisher mit "reinen" TStringLists ganz gut zurecht gekommen ^^, aber so lange (ca. 4-5 Monate ist das ja nicht :D)[/edit]

Hawkeye219 23. Apr 2006 16:45

Re: Memo in Stringlist umwandeln
 
Ich vermute, du hast in einer Parameterliste noch eine "TStringList" benutzt (vielleicht in der Routine UVorschau.FVorschau.Show()?). Die Parameter kannst du eigentlich immer als "TStrings" deklarieren und dann "TStringList"-Instanzen übergeben. Man sollte lediglich keine Instanzen von TStrings erzeugen und benutzen. Das führt dann zu der Meldung "Abstrakter Fehler", weil erst TStringList die abstrakten Methoden überschriebt.

Überprüfe es am besten mal und melde dich, wenn's nicht klappt.

Gruß Hawkeye

//Edit: oops, jetzt habe ich glatt deinen letzten Beitrag verpaßt :oops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:00 Uhr.
Seite 1 von 2  1 2      

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