Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Memo und typisierte Dateien (https://www.delphipraxis.net/143997-memo-und-typisierte-dateien.html)

Mysterio08 27. Nov 2009 15:38


Memo und typisierte Dateien
 
Guten Tag Programmierer!

Ich habe folgendes vor: Ich habe ein Formular entworfen, mit dem ein Benutzer Daten zu Notizen eingeben kann, z.B. Datum und Betreff. Natürlich auch die Notiz(en) selber, diese sollen in ein Memo eingegeben werden können. Nun sind all diese Daten Bestandteil eines Records, welches dann in einer typisierten Datei gespeichert werden kann. Jetzt gibt es aber Probleme mit den Notizen/Memo. Deklariere ich sie nur als String, also so
Delphi-Quellcode:
Text: String;
wird mir eine Fehlermeldung angezeigt, nämlich dass String-Literale nicht mehr als 255 Zeichen aufnehmen können. Es kann aber sehr gut sein, dass die Notiz mehr als 255 Zeichen beinhaltet.

Ich weiß gerade nicht so recht, wie ich damit umgehen soll, ihr seid doch bestimmt auch schonmal auf solch ein Problem gestoßen, oder?

mfg.

p80286 27. Nov 2009 15:43

Re: Memo und typisierte Dateien
 
Hallo Mysterio08,

das von Dir beschriebene Verhalten kenn ich nur bei Constanten-Deklarationen.
Wenn Du etwas mehr Sourcecode zeigst wird der Fehler vielleicht offensichtlicher.

Gruß
K-H

DeddyH 27. Nov 2009 15:44

Re: Memo und typisierte Dateien
 
Strings in Records sind immer so eine Sache. Die einfachste Möglichkeit wäre ShortString, aber der nützt Dir hier nichts (max. 255 Zeichen). Wenn Du String nimmst, speicherst Du nur den Zeiger, kommt also auch nicht in Frage. Bliebe noch die Möglichkeit, das Memo in eine separate Datei zu speichern und den Pfad dorthin im Record. Was auch noch klappen könnte, wäre ein Array[0..X] of Char, aber damit legst Du Dich wieder auf eine maximale Größe fest, außerdem wird u.U. der Record natürlich sehr groß. Das Geschmeidigste wäre daher IMO der Einsatz einer Datenbank, ist das eine Option?

Bernhard Geyer 27. Nov 2009 15:47

Re: Memo und typisierte Dateien
 
Wieso nimmst du nicht XML als speicherformat. Damit hast du dann keine Probleme falls weitere Elemente gespeichert werdne sollen oder du mal Unicode mit D2009 oder neuer willst.

Luckie 27. Nov 2009 15:52

Re: Memo und typisierte Dateien
 
String ist nur ein Zeiger auf einen Speicherbereich, wo die Zeichenkette steht. Wird der Datentyp in einem Record verwendet, macht Delphi anscheinend automatisch einen Shortstring daraus, da es keinen Sinn macht den Zeiger zu speichern. Ein Shortstring hat eine feste Größe von 255 Zeichen.

Du könntest alles nach einander in einem Stream speichern. dabei musst du aber die Größe der Felder und die Größe des Datensatzes mit abspeichern, damit du die Daten wieder trennen kannst.

Allerdings würde ich mir überlegen, ob man nicht besser XML-Dateien oder gar eine kleine Datenbank nutzt.

Mysterio08 27. Nov 2009 15:52

Re: Memo und typisierte Dateien
 
Danke schonmal für die Antworten.
Nein, eine Datenbank ist keine Lösung, aus schulischen Gründen bin ich "gezwungen", eine typisierte Datei zu erstellen.
Habe ich das denn richtig verstanden, es ist möglich 2 von diesen Dateien zu erstellen, eine für das Memo und eine für den Rest der Daten?
Eine Textdatei möchte ich nicht verwenden, denn es soll nur möglich sein, im Programm selbst Änderungen vorzunehmen.
Aber das mit dem
Delphi-Quellcode:
Text: Array[1..x] of Char
wäre noch eine Lösung. Kann das Array mehr als 255 Zeichen aufnehmen? Wenn ja, wäre dies eine in Frage kommende Option, denn ich kann Text als dynamisches Array deklarieren und später die Zeichenanzahl des Memos feststellen und das Array dimensionieren?
Und noch etwas ist mir in den Sinn gekommen: die TSTringList, was ist damit?

Edit/
Mit XML habe ich noch nicht gearbeitet, ich würde, wie gesagt, schon gerne erstmal mit der typisierten Datei arbeiten

Mithrandir 27. Nov 2009 15:54

Re: Memo und typisierte Dateien
 
Zitat:

Zitat von Luckie
Allerdings würde ich mir überlegen, ob man nicht besser XML-Dateien oder gar eine kleine Datenbank nutzt.

Man muss es im Prinzip für sich selbst entscheiden, ob nun XML oder ne "richtige" DB. Aber bei so einem Notizzettel würde ich schon n DBMS einsetzen, allerdings ein kleines, wie SQLite. Dazu gibts hier auch die passende Library.

Luckie 27. Nov 2009 15:57

Re: Memo und typisierte Dateien
 
aber anscheined handelt es sich um eine Schulaufgabe und es sollen typisierte Dateien verwendet werden.

DeddyH 27. Nov 2009 16:05

Re: Memo und typisierte Dateien
 
Dann wäre wie gesagt ein array of char eine Möglichkeit.

Mithrandir 27. Nov 2009 16:06

Re: Memo und typisierte Dateien
 
Zitat:

Zitat von Luckie
aber anscheined handelt es sich um eine Schulaufgabe und es sollen typisierte Dateien verwendet werden.

Der TE zeigt sich XML aber auch nicht abgeneigt. ;)


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