![]() |
Lange Strings im Record
Hallo,
gibt es in Delphi eine Möglichkeit in einem Record einen längeren String als 255 Zeichen zu benutzen. Ich arbeite mich Delphi 6 Prof. Mit freundlichen Grüssen, Oldmann |
Re: Lange Strings im Record
Eigentlich sollte es möglich sein, nur liegen dann die Textdaten nicht im Record, sondern im Record ist nur ein 4-Byte-Zeiger auf den Text enthalten.
direkt im String ginge nur ein Char-Array
Delphi-Quellcode:
das sind beides sozusagen strings mit je maximal 1024 Zeichen.
Type TMyRec = Record
String1: String; String2: AnsiString; Text1: Array[1..1024] of AnsiChar; Text2: Array[0..1023] of Char; End; String1 und String2: hier wären halt nir die Zeiger im Array und der Rest irgendwo anders. Text1: - Index 1 bis 1024 mach ich lieber so, da es so mit der Indizierung eines Strings übereinstimmt - AnsiChar entspricht in D6 noch dem Char, aber in D2009 wäre Char=WideChar und damit es dort keine Probleme gibt, nutz da lieber direkt AnsiChar Text2: - Index 0 bis 1024 würden viele nehmen, da die dymaischen Array und vieles andere mit dem Index 0 beginnt |
Re: Lange Strings im Record
Natürlich geht das. Du möchtest deinen Record aber bestimmt auch abspeichern. Da wird das dann etwas komplizierter. Sag mal, was du machen willst.
|
Re: Lange Strings im Record
Hallo,
hier ist ein Beispiel: Es geht z. B. um folgenden Record:
Delphi-Quellcode:
Das Feld 'Bemerkung' wird unter dem Stringgrid in eine Memo ausgegeben.
type
Dateien=record Gegenstand,Raum,bemerk:string[25]; preis:double; Anzahl:Integer; gekauft_am:string[10]; identnr,bild:String[15]; bemerkung:String[255]; end; Das ganze wird dann als Datensatz gespeichert. Ausgegeben wird das dann in ein Stringgrid z. B. So: assignfile(hrdat,lpf+'Datei.dat'); reset(hrdat); while not eof (hrdat) do begin read(hrdat,daten); StringGrid1.cells[0,reihe]:=daten.gegenstand; StringGrid1.cells[1,reihe]:=daten.raum; ….usw. end; closefile(hrdat); Ich möchte aber das Feld 'Bemerkung' grösser haben das mehr Daten eingegeben werden können. Wie kann ich das anstellen. Gruß Oldmann |
Re: Lange Strings im Record
Vielleicht könntest du noch die Delphi-Tags setzten, damit dein Code lesbarer wird.
Wenn du einen String mit 255 Zeichen vorgibst, und ihn verlängern möchtest, dann solltest du die Zahl erhöhen ;-) |
Re: Lange Strings im Record
Hallo,
nach meiner Kenntnis kann ein String in einem Record nur max. 255 Zeichen enthalten. Wenn ich die Zahl einfach erhöhen könnte, hätte ich das Problem nicht. Gruss Oldmann |
Re: Lange Strings im Record
Ein ShortString kann nur maximal 255 Zeichen lang werden. Bei einem AnsiString besteht diese Beschränkung nicht
|
Re: Lange Strings im Record
hallo mkinzler,
Leider kenne ich mich mit Ansistrings nicht aus. Wenn ich hinter 'Bemerkung:Ansistring' setze kommt ein Fehlermeldung: 'Benötigt Finalization, nicht inm Dateityp erlaubt.' Wie muss ich einen Ansistring deklarieren? Gruss Oldmann |
Re: Lange Strings im Record
Genauso. Allerdings ist dieser dann 0-terminiert, d.h. hat keine feste Länge und kann deshalb nicht in einer typisierten Datei verwendet werden. Du musst, wie oben beschrieben auf einen Char Array ausweichen.
|
Re: Lange Strings im Record
@oldman: Könntest du bitte noch die Delphitags setzen. Dazu einfach auf http://www.delphipraxis.net/template.../icon_edit.gif über dem entsprechenden Beitrag klicken und dann den Beiträg entsprechend ändern. :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 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