![]() |
TParam Blob/Memo in Stream ohne Unicodeumwandlung
Hi
Da TParam.GetData veraltet ist, wollte ich es ersetzen. Dazu habe ich eine helper class TparamHelper:
Delphi-Quellcode:
Wenn DataType des Parameters ftBlob ist, ist alles OK.
procedure TParamHelper.SaveToStream(AStream: TStream);
begin if not IsNull and (GetDataSize > 0) then begin AStream.Position := 0; AStream.WriteBuffer(AsBlob[0], Length(AsBlob)); { case DataType of ftMemo: AStream.WriteData(AsString[1], Length(AsString)); ftBlob: AStream.WriteBuffer(AsBlob[0], Length(AsBlob)); end; } AStream.Position := 0; end; end; Wenn DataType des Parameters ftMemo ist, werden meine Strings zu Unicode mit jeweils 2 Zeichen, also ein a ist dann 61 00. Was muss ich tun, dass im Memorystream die Strings wie in der DB gespeichert als ANSI ankommen. Danke Frank |
AW: TParam Blob/Memo in Stream ohne Unicodeumwandlung
Zitat:
|
AW: TParam Blob/Memo in Stream ohne Unicodeumwandlung
Ja - richtig.
Bisher habe ich diesen Code verwendet.
Delphi-Quellcode:
Kannst du mir evtl. noch sagen, wie ich die 2. Zeile ändern muss?AStream.SetSize(AParam.GetDataSize); AParam.GetData(AStream.Memory); Danke, Frank [EDIT] ich habe es jetzt so:
Delphi-Quellcode:
Das scheint erst mal zu funktionieren.procedure TParamHelper.SaveToStream(AStream: TMemoryStream); Var Buffer: PByte; begin if not IsNull and (GetDataSize > 0) then begin AStream.Position := 0; GetMem(Buffer, GetDataSize); try GetData(Buffer); AStream.WriteBuffer(Pointer(Buffer)^, GetDataSize); finally FreeMem(buffer); end; AStream.Position := 0; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:54 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