![]() |
TMemoryStream Create Problem
Hallo,
in einer eigenen Komponente habe ich TMemorystreams, diese werden im Create erzeugt und im Destroy wieder zerstört. Nun ist mir aufgefallen, dass die Streams Nil sind, wenn man sie vorher nicht mit irgendwas gefüllt hat! Das aber führt später zu Laufzeitfehlern (Stream Lesefehler) wenn man auf solch einen Stream zugreifen will. Folgendes Beispiel:
Delphi-Quellcode:
Das kann doch nicht wahr bzw. gewollt sein!
procedure TForm1.Button1Click(Sender: TObject);
begin ms1 := TMemorystream.Create; //ms1 ist jetzt immer noch Nil ms1.SetSize(1); //jetzt ist der Stream da ms1.clear; //und jetzt wieder Nil!!! end; Eine TStringlist ist nach Erzeugung doch auch nicht Nil oder wird beim Clear zu Nil! Wie bekomme ich nun Streams die auch leer "vorhanden sind"? Ciao Stefan |
AW: TMemoryStream Create Problem
Delphi-Quellcode:
ist nicht nil nach dem Create. Lediglich der enthaltene Memory-Pointer ist nil, aber das ist nicht nur so gewollt, sondern auch korrekt.
ms1
Wo genau liegt denn dein Problem? |
AW: TMemoryStream Create Problem
Hallo,
ich habe deinen Code mal ausprobiert (mit ms1 als lokale Variable). Auch eingeschaltener Optimierung ist ms1 nicht nil. Woher weisst du das? |
AW: TMemoryStream Create Problem
Ich habe ms1 im Überwachungsfenster, wird dort als Nil angezeigt.
Berlin 10.1 wenn das relevant ist. Ciao Stefan |
AW: TMemoryStream Create Problem
Zitat:
Delphi-Quellcode:
Ciao
ms1.Position :=0;
ms2.CopyFrom(ms1, ms1.Size); Stefan |
AW: TMemoryStream Create Problem
Bei mir ist Tokyo im Einsatz.
Es ist, wie Uwe schon geschrieben hat. Dein Beispiel knallt bei mir übrigens nicht. Ich fürchte, du suchst den Fehler an der falschen Stelle. |
AW: TMemoryStream Create Problem
Zitat:
|
AW: TMemoryStream Create Problem
Hallo,
Zitat:
Zeig mal mehr Code. Minimal-Beispiel ohne WPTools klappt auch nicht? Bei welcher Zeile "knallt" es? ms1.Position :=0; ms2.CopyFrom(ms1, ms1.Size); |
AW: TMemoryStream Create Problem
Liste der Anhänge anzeigen (Anzahl: 1)
Der Stream-Lesefehler beim Kopieren war ein Positionierungsfehler meinerseits, ändert aber nichts daran dass ein erzeugter Stream im Objektinspektor als Nil angezeigt wird (siehe Anhang)
Ciao Stefan |
AW: TMemoryStream Create Problem
Nein, der Stream ist nicht nil.
Genauer gesagt, weder ms1 noch ms2 sind nil, sondern die zugehörigen Memory-Pointer. Das ist was anderes. Uwe Raabe hatte das auch schon geschrieben. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:44 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