Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Sind für FileStreams AnsiStrings vonnöten? (https://www.delphipraxis.net/163181-sind-fuer-filestreams-ansistrings-vonnoeten.html)

Delphi_gn7 18. Sep 2011 17:52

Delphi-Version: 7

Sind für FileStreams AnsiStrings vonnöten?
 
Hi,

Gemäß dem Tutorial über FileStreams (mit Records) unter http://www.delphi-treff.de/tutorials...tei-speichern/ versuche ich in meinem Programm Records, die u.a. Stringwerte enthalten, diese per FileStream in eine Datei zu schreiben.

In dem Tutorial werden AnsiStrings dafür verwendet (die mir noch nie begegnet sind) - ist das zwingend erforderlich, oder tun's auch herkömmliche Strings?

MfG,
gn7

Luckie 18. Sep 2011 19:18

AW: Sind für FileStreams AnsiStrings vonnöten?
 
String: AnsiString < D2009 < String: WideString Du arbeitest also schon die ganze Zeit mit Ansistrings.

himitsu 18. Sep 2011 22:46

AW: Sind für FileStreams AnsiStrings vonnöten?
 
Für solche "externen" Daten niemals dynamische Datentypen verwenden :!:

Denn wenn sich das Datenformat mal ändert, dann sind die Daten nur noch "Schrott".


> kein Integer, String, Char und Co.


Du mußt dich also für ein "festes" Format entscheiden.

ShortString und AnsiString = immer ANSI
WideString oder UnicodeStrng (seit D2009) = Unicode
String = dynamisch und hängt vom Compiler ab




Schreib den Stream/Datei mit D7 und versuch es dann mal mit 2009/XE auszulesen (oder andersrum), was bei String/Char dann natürlich ins Chaos führt.

Bernhard Geyer 18. Sep 2011 22:51

AW: Sind für FileStreams AnsiStrings vonnöten?
 
Für Strings ist immer ein Längenangabe nötig wenn man Multi-Byte-Zeichensätzen arbeitet wo auch im String 0-Bytes vorkommen können.
Normalerweise verwendet man ein Längenbyte(word/dword) als Längenangabe am Anfangen.

jaenicke 19. Sep 2011 00:18

AW: Sind für FileStreams AnsiStrings vonnöten?
 
Hier findest du ein Beispiel:
http://www.delphi-forum.de/viewtopic...=645319#645319
Zur Speicherung benutze ich dort UTF8-kodierte Strings, damit die Daten zwar unicodefähig sind, aber zwischen den Delphiversionen austauschbar. Es gäbe auch andere Lösungen dafür, aber so ist es denke ich am einfachsten.

himitsu 19. Sep 2011 06:00

AW: Sind für FileStreams AnsiStrings vonnöten?
 
Unicode kann man ja auch mit älteren Versionen auslesen.

bis D2007 als WideString
ab D2009 als UnicodeString/String oder ebenfalls WideString


Aber UTF-8 hat noch den Vorteil, daß es oftmals wohl weniger Speicher verbraucht (im europäischen Raum)


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:32 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