![]() |
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:
Und TStrings funzt deswegen nicht:
procedure TFIni.SaveIni(Text : TStringList);
begin if SDSave.Execute then Text.SaveToFile(SDSave.FileName); end;
Delphi-Quellcode:
Gibts eine Funktion, die das umwandelt?
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; |
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 |
Re: Memo in Stringlist umwandeln
Ähm... welches Text?
Delphi-Quellcode:
so?
procedure TFIni.SaveIni(Text : TStrings);
begin if SDSave.Execute then Text.SaveToFile(SDSave.FileName); end; Dann gibst einen fehler mit SpeichernEinleiten! |
Re: Memo in Stringlist umwandeln
Hi!
Welchen Fehler gibt es denn? Ciao Frederic |
Re: Memo in Stringlist umwandeln
Die lokale Variable Text meinte ich natürlich auch...
Gruß Hawkeye |
Re: Memo in Stringlist umwandeln
Wenn ich das mache meint er: Abstracter Fehler! Und auch mit richtiger Intialisierung
Delphi-Quellcode:
Das MVorschau(.Lines) nicht mit dem Übergabeparameter übereinstimmen!
Text := TStrings.Create
Zitat:
|
Re: Memo in Stringlist umwandeln
Sieht der Anfang der Routine auch wirklich so aus?
Delphi-Quellcode:
//Edit:
procedure TFIni.SpeichernEinleiten(Sender: TObject);
var Text : TStrings; // <<--- TStrings! i, j : Integer; begin Text := TStringList.Create; // <<--- TStringList! try und SaveIni so?
Delphi-Quellcode:
procedure TFIni.SaveIni(Text : TStrings); // <<--- TStrings!
begin if SDSave.Execute then Text.SaveToFile(SDSave.FileName); end; |
Re: Memo in Stringlist umwandeln
ja
edit: Meine Stringlisten definiere ich immer als TStrings, sonst funktionieren sie nie. |
Re: Memo in Stringlist umwandeln
Genial Hawkeye!
Ich dachte bisher folgendes:
Delphi-Quellcode:
Nun interessiert es mich noch, warum das so geht, wie du das beschrieben hast?
var <Variable> : <Typenbezeichnung>
{...} <Variable> := <Typenbezeichnung d. Variable>.Create [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] |
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: |
Re: Memo in Stringlist umwandeln
Alternativ erstellst du eine eigene StringList und machst dann StringList.Assign(Memo.Text)
EDIT: Das kann nämlich nicht schieflaufen. mfG Markus |
Re: Memo in Stringlist umwandeln
"Dass das so funktioniert" ist die Anwendung eines der grundlegensten Prinzipien der OOP: Abstrahierung.
TStrings ist eine abstrakte basisklasse. Alle Funktionen darin sind abstrakt, d.h. nur deklariert, nicht definiert. Deshalb wird "Tstrings.Create" auch einen abstrakten Fehler werfen. TStringList ist von TStrings abgeleitet und implementiert damit das Stringlist-"Modell". Denkbar wäre eine Ableitung "TRegistryList", die diese Strings in die Registry speichert. Sie wäre mit TStrings und allen FUnktionen, die mit TStrings arbeiten, immer noch voll kompatibel. Man kann z.B. auch in jedem TNotifyEvent mit (Sender as TControl) arbeiten, da alle Sender wie TEdit, TComboBox, TForm von TControl abgeleitet sind. Auf alle Funktionen und Eigenschaften, die in TControl schon definiert sind (z.B. Tag) kann man damit schon zugreifen. |
Re: Memo in Stringlist umwandeln
Zitat:
Stringlist.Text := Memo.Lines.Text; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:37 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