AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Nutzung MemoryStream und FileStream

Ein Thema von BasilBavaria · begonnen am 18. Mai 2011 · letzter Beitrag vom 19. Mai 2011
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#11

AW: Nutzung MemoryStream und FileStream

  Alt 18. Mai 2011, 18:03
Wo wir eh gerade bei Chars und AnsiChars/WideChars sind: Falls du noch Strings und Chars hast, die auf AnsiStrings und AnsiChars verweisen, ist deine Struktur spätestens nach einem Wechsel auf Delphi >= 2009 im Eimer. Also am Besten gleich WideStrings und WideChars verwenden. Dann sind die auch kompatibel und die Struktur ändert sich erst wieder mit der Einführung von UTF-32.

Bernhard

ADD: Turbo Delphi hat noch AnsiStrings und AnsiChars (sowie PAnsiChars). Wenn du in Erwägung ziehst, irgendwann mal eine neue Delphi-Version einzusetzen, würde ich empfehlen, Wide* zu verwenden, da du dann weniger Probleme hast.
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#12

AW: Nutzung MemoryStream und FileStream

  Alt 18. Mai 2011, 18:09
Das gilt allerdings nicht für Shortstrings, diese sind AFAIK immer ANSI-kodiert.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#13

AW: Nutzung MemoryStream und FileStream

  Alt 18. Mai 2011, 18:15
Das gilt allerdings nicht für Shortstrings, diese sind AFAIK immer ANSI-kodiert.
Ja, aus Gründen der Abwärtskompatibilität.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#14

AW: Nutzung MemoryStream und FileStream

  Alt 18. Mai 2011, 18:59
Na also, wenn er also in seinem Record lediglich Shortstrings ablegt, sollten die einen Wechsel zu einer aktuellen Delphi-Version auch schadlos überstehen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#15

AW: Nutzung MemoryStream und FileStream

  Alt 18. Mai 2011, 19:25
Die Frage ist auch noch, wie genau er seinen Record speichert/ausließt ... das wurde ja bis jetzt noch nicht genannt.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
BasilBavaria

Registriert seit: 18. Mai 2011
Ort: Niederbayern
22 Beiträge
 
Turbo Delphi für Win32
 
#16

AW: Nutzung MemoryStream und FileStream

  Alt 19. Mai 2011, 09:20
Ich hab die Größenprüfungen eingebaut und etwas gefunden:

Die Size des Streams ändert sich anscheinend, wenn Umlaute und Sonderzeichen wie 'ß' im String enthalten sind.
Die Erweiterung des String liefert noch einen korrekten String
Code:
Writer.WriteString( StrExt(KartenSatz.Info1,true,cszInfo1) );
Beim Prüfen vor Update/Schreiben ist der Stream bei einem Umlaut um 4 Byte vergößert (4937 statt 4933) - bei zwei Umlauten aber nur auf 4938 Byte???
Der String "öß cnchjhj Ä ..kjhk ß" liefert 4940 Byte.
Bei Umlauten in zwei Feldern 4941 Byte usw.

Der Fehler scheint also bei Writer zu liegen - aber warum? In der Onlinehilfe hab ich nix gefunden.
Die Zeiten ändern sich Früher traute ich keinem Computer, den ich nicht mehr tragen kann - heute keinem, den ich nicht mehr sehen kann ...
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#17

AW: Nutzung MemoryStream und FileStream

  Alt 19. Mai 2011, 09:24
Dann schreib halt notfalls selbst in den Stream
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#18

AW: Nutzung MemoryStream und FileStream

  Alt 19. Mai 2011, 09:29
Der Record mit ShortStrings kann übrigens direkt in den Stream kopiert werden.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#19

AW: Nutzung MemoryStream und FileStream

  Alt 19. Mai 2011, 17:53
Zitat:
TWriter wird intern vom Komponenten-Streaming-System verwendet, um Informationen zu einer Komponente (z.B. Komponenteneigenschaften, die als public deklariert sind, oder benutzerdefinierte Eigenschaftsdaten) in einen Stream zu schreiben
Das würde ich so verstehen, das TWriter nicht die erste Wahl ist, ein Record in eine Datei zu schreiben.
Außerdem sind "Strings" doch von Natur aus dynamisch. Nur Shortstrings und Array [0..x] of Char/Byte haben eine definierte Länge, da wundert es mich erst einmal überhaupt nicht, das nicht die angenommene Satzlänge in der Datei landet.
Gerüchteweise habe ich vernommen, daß seit einigen Delphi-Versionen SizeOf und Length auch nicht mehr äquivalent sind.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#20

AW: Nutzung MemoryStream und FileStream

  Alt 19. Mai 2011, 19:10
Gerüchteweise habe ich vernommen, daß seit einigen Delphi-Versionen SizeOf und Length auch nicht mehr äquivalent sind.
Wie auch, da Length die Länge in Zeichen angibt. Da aber seit Delphi 2009 ein Zeichen nicht mehr genau ein Byte groß ist, müssen sich diese beiden ja unterscheiden.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz