Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Memo in ein TMemo speichern und wieder auslesen? (https://www.delphipraxis.net/122313-memo-ein-tmemo-speichern-und-wieder-auslesen.html)

Piro 13. Okt 2008 19:55


Memo in ein TMemo speichern und wieder auslesen?
 
Guten Abend,

ich habe mir ein CLass gebaut, welches ich verwende um ein VirtualTreeView zu füllen (Beispiel aus dem virtuellen Stammtisch. Alles funktioniert auch wunderbar. Nur ein Memo bekomme ich nicht gespeichert bzw. nach dem Speichern sind die Daten nicht mehr da für das Memo.

Definition der Klasse:
Delphi-Quellcode:
type
  TOSystemData = class
  private
    //
  public
    ...
    name     : String;
    comments : TMemo;
    ...
  end;
Speichern der Memo Daten:
Delphi-Quellcode:
...
 SystemData := TOSystemData.Create;
 with SystemData do
 begin
   name    := edt_system.Text;
   comments := memo_comments;
 end;
 vst_system.AddChild(nil, SystemData);
...
Zugriff auf gespeicherte DAten:
Delphi-Quellcode:
...
 SystemData     := TOSystemData(vst_system.GetNodeData(curNode)^);
 edt_system.Text := SystemData.name;
 memo_comments  := SystemData.comments;
Leider bleibt das Memo Feld auf dem Formular leer. Warum?

mkinzler 13. Okt 2008 19:58

Re: Memo in ein TMemo speichern und wieder auslesen?
 
Beschränke dich mal auf Memo.Text

Piro 13. Okt 2008 20:03

Re: Memo in ein TMemo speichern und wieder auslesen?
 
Ich habe über all ".Text" eingefügt aber es bleibt trotzdem leer.

mkinzler 13. Okt 2008 20:08

Re: Memo in ein TMemo speichern und wieder auslesen?
 
Und welchen Typ hat comments jetzt?

Piro 13. Okt 2008 20:13

Re: Memo in ein TMemo speichern und wieder auslesen?
 
Comments habe ich auch .Text angehangen und der Type ist "TMemo".

Wenn ich das .Text bei comments weglasse, erscheint folgender Fehler:
Zitat:

[Pascal Fehler] uMain.pas(1663): E2010 Inkompatible Typen: 'TMemo' und 'TCaption'

mkinzler 13. Okt 2008 20:28

Re: Memo in ein TMemo speichern und wieder auslesen?
 
Memo.Text ist vom Typ String

Piro 13. Okt 2008 23:49

Re: Memo in ein TMemo speichern und wieder auslesen?
 
Irgendwie ist mir das alles nicht so wirklich klar. Verstehe ich das richtig?

1. comments soll ein String werden
2. comments := memo_comments.Text

Wenn nein, wäre es schön zu wissen, wie es gemeint ist oder wie ich was ändern müßte.

Vielen Dank im voraus.

Sven

_frank_ 14. Okt 2008 00:29

Re: Memo in ein TMemo speichern und wieder auslesen?
 
stimmt schon...warum probierst du's nicht einfach :)

vielleicht mal grob als Erklärung, was du vorher gemacht hast:

TMemo ist eine Klasse, comment war eine Instanzvariable, welche nach dem zuweisen nur einen Pointer auf die zugewiesene instanz enthielt (32bit-integer). du greifst also mit memo_comments und mit comments auf das gleiche (nur einmal existierende) Objekt zu. wenn da die Eigeneschaft text leer ist, bekommst du über beide Variablen einen Leerstring zurück. sämtliche Klassen funktionieren nach diesem Prinzip. vielleicht solltest du dir mal ein Anfängertutorial anschauen, was sich mit Klassen,Objekten, Pointern etc beschäftigt....

beim typ String ist dagegen ein bisschen sog. Compiler-Magic im Spiel. Grundlegend liegt auch nur Pointer in der variable (man hat ja in einem Register im Normalfall nur 32 bit zur Verfügung), ABER: bei der zuweisung wird nicht der pointer geändert sondern der referenzierte speicherbereich an die länge des Strings angepasst (und ein 32-bit-integer davor angepasst).Bei PChar ist es ähnlich, nur dass da der Integer zur Längenkennzeichnung fehlt, dafür geht der string bis zum ersten vorkommen eines 0-bytes.

Gruß Frank

Piro 14. Okt 2008 19:23

Re: Memo in ein TMemo speichern und wieder auslesen?
 
:bounce1: :bouncing4:

Ich glaube es nicht. Ich habe es hinbekommen.

Vielen vielen Dank euch und schönen Abend.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:28 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