Einzelnen Beitrag anzeigen

Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: TStrings.SaveToStream von XE6 nach Rio

  Alt 29. Mär 2019, 11:05
Also wenn ich nicht völlig blind bin, kommt "AsString" doch gar nicht in Deinem Quellcode vor. Wie kann es also da krachen?
Sorry

Ich hätte es deutlicher ausdrücken sollen.
Ist eine eifache Zuweisung mit AsString sinnvoller als der Umweg über Stream.

Ich habe vor ein paar Jahren bei der Umstellung auf Unicode (Delphi 2010 auf XE4) den ParamHelper eingeführt,
da ich - nur bei Stored Procedures - alle Stellen im Code ändern musste, wo ich einem TParam (Memo) Text aus einer Stringliste zugewiesen habe.
Die Texte sahen dann aus wie im Anhang.
Paramter in Querys waren komischerweise nicht betroffen.
Der Helper hat wie gesagt bis XE6 funktioniert.

Nun hat sich das umgekehrt.
Jetzt liefert mir der Helper den String wie im Anhang.

Delphi-Quellcode:
procedure TParamHelper.LoadFromStrings(const AStrings: TStringList);
Var
  AStream: TMemoryStream;
begin
  AStream := TMemoryStream.Create;
  try
    AStrings.SaveToStream(AStream);
    AStream.Position := 0;
    LoadFromStream(AStream, ftBlob);
    // Value liefert mir im Debugger: Variant array of Byte
    // AsString liefert mir: siehe Anhang
  finally
    AStream.Free;
  end;
end;
Ich habe zwar auch die DB - Zugriffskomponenten erneuert, aber da ja TParam von Delphi kommt, habe ich die als Verdächtige ausgeschlossen.

Ich habe jetzt wieder die direkte Zuweisung mit AsString eingeführt und es funktioniert wieder.
Ich ärgere mich nur, dass ich den Grund des Verhaltens nicht erkenne.

ALso, Danke für die Antworten. Ich hoffe, ich habe mich etwas verständlicher ausgedrückt.

Frank
Miniaturansicht angehängter Grafiken
paramasstring.png  
Frank Reim
  Mit Zitat antworten Zitat