![]() |
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:
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.
Text: String;
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. |
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 |
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?
|
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.
|
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. |
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:
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?
Text: Array[1..x] of Char
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 |
Re: Memo und typisierte Dateien
Zitat:
![]() |
Re: Memo und typisierte Dateien
aber anscheined handelt es sich um eine Schulaufgabe und es sollen typisierte Dateien verwendet werden.
|
Re: Memo und typisierte Dateien
Dann wäre wie gesagt ein array of char eine Möglichkeit.
|
Re: Memo und typisierte Dateien
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:42 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