![]() |
Dateigröße bei Array of String[255];
Hallo,
ich habe ein Programm geschrieben, welches eine Datei einliest mit einem Array[0..1000] of String [255] Ich möchte, dass sich die Länge der Strings automatisch einstellt, um die Datei kleiner zu machen. Die Länge sollte aber auch maximal werden können. mfg Hazardos |
Re: Dateigröße bei Array of String[255];
Hallo Hazardos!
Sofern die Datei nur Text und keine anderen Daten beinhaltet, verwende doch einfach TStringlist (Methoden:LoadFromFile, SaveToFile). Falls Du NonVCL würd ich mir die VCL Implementierung mal anschauen. Ist nämlich gut gelöst von den Borländern. Viele Grüsse OLLI |
Re: Dateigröße bei Array of String[255];
Wie wäre es mit AssigneFile, Reset, und Readln? :roll:
|
Re: Dateigröße bei Array of String[255];
und ähm
...array of string; //[255] weglassen |
Re: Dateigröße bei Array of String[255];
Den teil brauche ich um eine datei diesen typs zu speichern.... deswegen auch
Delphi-Quellcode:
array[0..1000] of string[255]
|
Re: Dateigröße bei Array of String[255];
Ich würde das so machen! [Nicht verpflichtend]
Delphi-Quellcode:
Einfache währe eine TStringList nachkomme!
?? = record
dwLength : Cardinal; // Anzahl der Zeichen fStrs : array [0..0] of String; end; In die Datei wird dann gespeichert: 4 Byte - Anzahl der Strings für jeden Eintrag 4 Byte - Länge des Strings n Byte - Daten des Textes |
Re: Dateigröße bei Array of String[255];
Moin Neolithos,
wenn Du versuchst einen Record einzulesen, der so aufgebaut ist, wirst Du aber nicht das Gewünschte erhalten. Ein String ist schliesslich erst einmal nur ein Pointer, dass heisst der Record, den Du da deklariert hast, hat eine Länge von 8 Byte. Das beschriebene Prinzip (Länge + n Byte Daten) ist natürlich richtig, aber so einen Record kannst Du leider nicht dafür verwenden. |
Re: Dateigröße bei Array of String[255];
Warum nicht???
Mein Bsp. ausführlicher (nur einlesen): BlockRead-> ersten 4 Bytes in dwLength GetMem(fData, 4 * dwLength + 4) <- obwohl ich mir an dieser Stelle nicht sicher bin ob ich Delphi mit seiner String-Verarbeitung durcheinander bringe (deshalb verwende ich meistens PChar's, die sind eindeutig) fData.dwLength := dwLength; Und dann für jeden Eintrag: Länge via. BlockRead Einlesen der String-Daten String -> SetLength(fData.fStr[I], Länge) PChar -> GetMem(fData.fStr[I], Länge + 1) ------ * vorsicht nicht getestet, nur aus dem gedächtnis notiert * |
Re: Dateigröße bei Array of String[255];
Moin Neolithos,
so ginge das natürlich. Ich meinte, dass man nicht einfach einen Record so definieren kann, wie Du es getan hast, und direkt in diesen Einlesen, ohne Speicher zu reservieren. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:33 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