![]() |
Records und Strings
Hallo,
ich wollte mein Dateiformat mit Informationen darin in einem Record abspeichern. Jedoch bräuchte ich auch ziemlich lange Strings, da unter anderem ganze Texte als String vorliegen. Kann man das irgendwie mit Records machen oder muss ich mein eigenes Dateiformat irgendwie ganz anders machen?? mfG mirage228 |
Re: Records und Strings
Hä?
Zitat:
Chris |
Re: Records und Strings
Hallo,
einen Huge-String kannst Du nicht in einem File Of Record bzw typisierten Datei verwenden. Das geht nur mit ShortStrings oder Strings fester Länge. Du solltest es mit Streams versuchen. Für Deine Frage wäre TFileStream das richtige. Leider hat auch TFileStream von haus aus keine Methoden zum lesen und schreiben von String. Macht aber nix. Mit den folgenden Nachfahren ist das kein Problem:
Delphi-Quellcode:
nit Streaming;
interface uses Sysutils, Classes; Type TMemoryStreamExt = class(TMemoryStream) public procedure WriteStringToStream(aStr : String); function ReadStringFromStream : String; end; TFileStreamExt = class(TFilestream) public procedure WriteStringToStream(aStr : String); function ReadStringFromStream : String; end; implementation { TFileStreamExt } procedure TFileStreamExt.WriteStringToStream(aStr : String); var aStrLen : Integer; begin aStrLen:=Length(aStr); WriteBuffer(aStrLen,SizeOf(Integer)); WriteBuffer(Pointer(aStr)^,aStrLen); end; function TFileStreamExt.ReadStringFromStream: String; var aStrLen : Integer; begin ReadBuffer(aStrLen,SizeOf(Integer)); SetLength(Result,aStrLen); ReadBuffer(Pointer(Result)^,aStrLen); end; { TMemoryStreamExt } function TMemoryStreamExt.ReadStringFromStream: String; var aStrLen : Integer; begin ReadBuffer(aStrLen,SizeOf(Integer)); SetLength(Result,aStrLen); ReadBuffer(Pointer(Result)^,aStrLen); end; procedure TMemoryStreamExt.WriteStringToStream(aStr: String); var aStrLen : Integer; begin aStrLen:=Length(aStr); WriteBuffer(aStrLen,SizeOf(Integer)); WriteBuffer(Pointer(aStr)^,aStrLen); end; end. |
Re: Records und Strings
Ah, thx, so sollts gehen ;-)
:dancer2: :dancer: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:02 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