![]() |
AW: Formatierten Text in PostgreSQL 9 speichern
Wie Perlsau bereits schrieb, ist nun das Problem dein UniCode!
RichEdit -> AnsiStr... Mach aus deinem
Delphi-Quellcode:
doch mal
var
FStream: TStringStream; strtest: widestring;
Delphi-Quellcode:
und setze bei FStream := TStringStream.Create('',e); für e das Encoding für ANSI..
var
FStream: TStringStream; strtest: AnsiString; |
AW: Formatierten Text in PostgreSQL 9 speichern
@Perlsau :thumb:
Um das ganze ein wenig zu erhellen:
Delphi-Quellcode:
Sodele, und jetzt achauen wir uns einmal das Encoding an. Was fällt uns auf?
procedure StreamCopyStrings( Source, Destination: TStrings );
var lTempStream: TMemoryStream; begin lTempStream := TMemoryStream.Create; try Source.SaveToStream( lTempStream ); lTempStream.Position := 0; Destination.LoadFromStream( lTempStream ); finally lTempStream.Free; end; end; procedure TForm1.Button1Click( Sender: TObject ); begin StreamCopyStrings( RichEdit1.Lines, Memo1.Lines ); Label1.Caption := Memo1.Lines.Encoding.EncodingName; end; Und wenn wir das beim Einlesen in den StringStream nicht berücksichtigen, dann bekommen wir eben nur Grütze (wie man sehen kann). Also entweder einfach in den (Binär)-Stream packen und wieder auslesen oder man weiß was man tut und kennt sich mit dem Encoding Geraffel aus :stupid: |
AW: Formatierten Text in PostgreSQL 9 speichern
Hallo,
ich bin schon mal einen Schritt weiter, mit der Umstellung auf AnsiString kommt der Testtext bei der obigen Methode unverändert im zweiten Richedit an.:thumb: Jetzt muss ich das Ganze nur noch in die Datenbank bringen. Gruß Frank |
AW: Formatierten Text in PostgreSQL 9 speichern
Das Einfügen in die Datenbank sollte dann eigentlich über Parameter funktionieren:
Delphi-Quellcode:
Per Stream müsste das auch gehen, ohne diesen Stringumweg:
ZQuery1.SQL.Text := 'insert into notes (notizfeld) values (%Value)';
ZQuery1.ParamByName('Value').AsString := QuotedStr(DeineStringGetFunktion); ZQuery1.ExecSQL;
Delphi-Quellcode:
var lTempStream: TMemoryStream; begin lTempStream := TMemoryStream.Create; try edt1.Lines.SaveToStream(lTempStream); lTempStream.Position := 0; ZQuery1.SQL.Text := 'insert into notes (notizfeld) values (%Value)'; ZQuery1.ParamByName('Value').LoadFromStream(lTempStream ,ftBlob); ZQuery1.ExecSQL; finally lTempStream.Free; end; end; (* Typ musst Du passend auswählen: TFieldType = (ftUnknown, ftString, ftSmallint, ftInteger, ftWord, ftBoolean, ftFloat, ftCurrency, ftBCD, ftDate, ftTime, ftDateTime, ftBytes, ftVarBytes, ftAutoInc, ftBlob, ftMemo, ftGraphic, ftFmtMemo, ftParadoxOle, ftDBaseOle, ftTypedBinary, ftCursor, ftFixedChar, ftWideString, ftLargeint, ftADT, ftArray, ftReference, ftDataSet, ftOraBlob, ftOraClob, ftVariant, ftInterface, ftIDispatch, ftGuid, ftTimeStamp, ftFMTBcd); *) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:22 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