![]() |
TMemoryStream Ausgabe!
hallo,zusammen!
ich beschäftige mich jetzt miet Tmemorystream,hab das folgende Problem
Delphi-Quellcode:
mit "SDTable1.locate" fokussiere ich eine Zeile, die jedes mal mit "string(b[2*x+1]" und "string(a[0]" bestimmt wird,dann wird der Text in dem Feld 'InhaltDE_Text' in stream1 gespeichert.
stream2 :=TMemoryStream.Create;
for x := 0 to ((y div 2)-1) do begin stream1 :=TMemoryStream.Create; SDTable1.open; SDTable1.locate('TXTNr;SprID',VarArrayOf([string(b[2*x+1]),string(a[0])]),[loPartialKey]); TBlobField(SDTable1.FieldByName('InhaltDE_Text')).SaveToStream(stream1); stream1.Position := 0; stream2.Position := stream2.Size; stream2.CopyFrom(stream1,0); stream1.free; end; Stream2.Position := 0; JvRichEdit1.StreamFormat := sfRichText; JvRichEdit1.Lines.loadfromstream(stream2); stream2.Free; end; eigentlich wollte ich jeden einzelnen Text in stream2 hinzufügen, und am End alle Texte von stream2 ausgeben.aber das klappt irgendwie nicht! stream2 gibt nur die erste stream1 aus,z.B stream2 hat Größe von 1204 ,aber gibt nur die ersten 167 aus.es ist genau die Größe von stream1, wenn x:= 0 . Wer es weiss ,bitte mir einen Hinweis geben! vielen Dank!!!! |
Re: TMemoryStream Ausgabe!
Herzlich willkommen in der Delphi-PRAXiS, allen928cn.
Das Table.Open() solltest du besser aus der Schleife heraus nehmen. Das Zurücksetzen der Position von Stream1 ist überflüssig, da diese durch den Count 0 im nachfolgenden CopyFrom() implizit auf 0 gesetzt wird. Die Position von Stream2 musst du vor dem CopyFrom() auch nicht setzen, da sie eh beibehalten wird. Das waren jetzt nur drei überflüssige Statements, aber keine Erklärung für dein eigentliches Problem - diese findest du wahrscheinlich hier: ![]() Freundliche Grüße vom marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:46 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