![]() |
string mit mehr als 255 zeichen ?
hallo ich möchte in einem record informationen
aus einer richedit speichern, diese info soll ca. 2000 zeichen betragen das shortstring dafür nicht in frage kommt, ist mir klar, aber welches andere format sollte ich wählen ? habe es mit WideString und AnsiString versucht, jedoch meckert der compiler dann folgendes an: Typ Record benötigt Finalisation - nicht im dateityp erlaubt was mir die online-hilfe zur fehlermeldung sagt, versteht ich nicht ! :wall: |
Re: string mit mehr als 255 zeichen ?
Wenns nicht anders geht kannst du ja versuchen den string aufzuplitten und in einem Array
Delphi-Quellcode:
zu speichern...
Wuppdi: Array[1..10] of String[200];
...aber das ist nicht so die feine englische art. musst du unbedingt in einem record speichern? mfG mirage228 |
Re: string mit mehr als 255 zeichen ?
ich bin gerade dabei das tutorial
'typisierte dateien' von delphi-source.de auf mein programm anzuwenden. dort wird's speichern/lesen/verwalten... von dateien mit hilfe des record erklärt. möchte ungern versuchen, da ich mich noch sehr als anfänger fühle, das ganze anderes zu realisieren. bin froh, wenn das programm am ende noch läuft ;) das mit dem aufsplitten, habe ich schon gelesen. eine andere möglichkeit besteht nicht ? schade :( |
Re: string mit mehr als 255 zeichen ?
Also wenn ich z.B. mit
Delphi-Quellcode:
einen 2000 Zeichen langen String erzeuge, meckert er eigentlich nicht. :gruebel:
var str : String;
i : Integer; begin For i := 0 to 2000 do str := str +'A'; ShowMessage(str); end; |
Re: string mit mehr als 255 zeichen ?
Zitat:
Ach ja, zum Thema selber (werd' ich jetzt auf die alten Tage vergesslich?): Probier's mal mit 'nem Characterarray:
Delphi-Quellcode:
Funktioniert bei mir, demnach müsste auch das Text-Property vom Richedit zuweisungskompatibel zu so einem Array sein und das Schreiben sollte eigentlich auch funktionieren.
var
str: array[0..2000] of Char begin str := 'Hello, world'; ShowMessage(str); end; Edit2: Tags korrigiert, nicht nur vergesslich, sondern auch senil... :pale: |
Re: string mit mehr als 255 zeichen ?
danke tommie-lie, ich denke so werde ich es machen
... und kopf hoch ;) an Stanlay Hanks, ja, ich weis, das dein codebeispiel funktioniert es stört den compiler nur die tatsache (mich stört eigentlich nicht ;)), das die 255-zeichengröße im string überstritten wurde... nunja 8) eine lösung habe ich ja nun gefunden und ich danke euch allen! |
Re: string mit mehr als 255 zeichen ?
Sorry, wenn ich nochmal nachfrage, aber was stört deinen Compiler? Ich kapier das grade nicht :oops: Bei mir funzt das alles anstandslos.
|
Re: string mit mehr als 255 zeichen ?
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich verwende grundsätzlich keine Records. Es sei denn für API Funktionen. Wenn ich es aber selber in der Hand habe - keine Records - Nur noch Objekte. Das gilt insbesondere wenn ich schnell mal etwas speichern muss. Im Anhang verwende ich anstatt eines Records einen Nachfahren von TComponent. Die Eigenschaften, deren Inhalte man speichern möchte werden als published deklariert. Mit TFileStream.WriteComponent und TFileStream.ReadComponent wird dann gespeichert und geladen. Dadurch das TSaveObject ein Nachfahre von TComponent ist werden die published Eigenschaften automatisch vom Delphi-Streaming-System erfasst und mit gespeichert. Das Delphi-Streaming-System ist auch dafür verantwortlich, das die Komponenten und deren Einstellungen im OI, die innerhalb der IDE auf das Formular gesetzt werden gespeichert werden. Dieser Nachfahre von TComponent TSaveObject hat genau eine Eigenschaft. Die Eigenschaft Text kann jetzt soviele Zeichen enthalten wie man will (na ja fast auch ein AnsiString ist irgendwann mal voll). Programm starten und auf Load klicken. Dann mal auf Prior und Next klicken. Ich hoffe das kleine Beispiel erklärt sich von selbst. Hinweis: Man kann auch ein Object als Eigenschaft deklarieren (solange es min. TPersistent abstammt). Dann werden auch die published Eigenschaften dieses Objectes automatisch gespeichert. D.h. mit dem bißchen Code kann schon recht komplexe Datenstrukturen speichern. |
Re: string mit mehr als 255 zeichen ?
ich danke dir jens schuhmann ! :thuimb:
das klingt ja höchst interessant :) werde mich mal in die thematik einarbeiten, weil ich mich damit zuvor noch nie beschäftigt habe. eine andere frage hätte ich aber noch:
Delphi-Quellcode:
der compiler meldet:
type RecNewProduct = Record
ProductName: String[255]; Category: Integer; SerialNumber: String[255]; ArticleDescription: Array [1..2000] Of Char; ImagePath: String[255]; End; // ... weiter unten ... For i := 1 To 2000 Do Buffer[p+1].ArticleDescription[i] := '';
Code:
Wie kann ich also einen Char den Wert 'leer' zuweisen ?
Inkompatible Typen: 'Char' und 'String'
|
Re: string mit mehr als 255 zeichen ?
Zitat:
|
Re: string mit mehr als 255 zeichen ?
ja klar
hatte es mit
Delphi-Quellcode:
versucht.
Buffer[p+1].ArticleDescription[i] := '';
mit leerzeichen klappt es ! :) |
Re: string mit mehr als 255 zeichen ?
hallo Jens Schumann,
wärest du so frei und kommentierst den von dir angehängten quelltext, ich habe leider probleme, deinem code zu folgen. :( thanx ! |
Re: string mit mehr als 255 zeichen ?
Zitat:
Delphi-Quellcode:
ist da eine wesentlich bessere Lösung als ein Leerzeichen...
For i := 1 To 2000 Do
Buffer[p+1].ArticleDescription[i] := #0; Edit: Schon wieder ein falscher Tag... ich mache mir Angst! |
Re: string mit mehr als 255 zeichen ?
ok, ich hab's bei mir im code geändert.
vielen dank für den hinweis. :hi: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:15 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 by Thomas Breitkreuz