![]() |
Datenbank: firebird 1.5 • Zugriff über: ibx, ibexpert
unicode_fss-konvertierung
hallo,
ich habe folgendes problem: ich lese daten mit tstringfield - komponenten aus einer paradox-tabelle und will diese in einer firebird-datenbank speichern. die char-felder in der paradox-tabelle sind 1-byte-chars, die in der firebird-tabelle sind in unicode_fss. habe zuerst probiert, für die firebird-tabelle twidestringfield - komponenten zu nehmen. das geht aber nicht, da firebird scheinbar die felder selbst als 1-byte-chars versendet (scheinbar spaltet der die 2-byte-zeichen auf)..jedenfalls bekomm ich immer eine exception, schon wenn ich nur die firebird-datenbank öffne, dass das feld vom typ string ist, aber widestring erwartet wird. wenn ich stattdessen tibstringfield - komponenten verwende, klappt zwar das übertragen der daten von der einen tabelle in die andere, aber umlaute und sonderzeichen werden falsch 'konvertiert' zumindest bei einem bloßen:
Delphi-Quellcode:
Wie bekomme ich es hin, dass der in ibsf das widestring-äquivalent von sf speichert?
var
ibsf: TIBStringField; sf: TStringField; ibsf.AsString := sf.AsString; wenn firebird diesen unicode_fss - zeichensatz hat, muss es doch auch möglich sein, da widestrings zu speichern, oder? danke, martin |
Re: unicode_fss-konvertierung
IBX ist nicht wirklich unicode-fähig.
Aber versuch mal
Delphi-Quellcode:
Aber wahrscheinlich mußt du wohl auf andere Komponenten umsteigen.
Table.FieldByName(<filedname>).AsWideString
|
Re: unicode_fss-konvertierung
Zitat:
ja die eigenschaft gibt es leider nicht :-( weißt du von irgendwelchen komponenten, mit denen ich das 100% gebacken krieg? danke, martin |
Re: unicode_fss-konvertierung
Also bei Zeos gibte es diese Eigenchaft. Wenn du mir ne datenbank mit daten schickst kann ich es Testen.
Funktionieren müßte es auch mit IBObjects, fibplus, IBDac. |
Re: unicode_fss-konvertierung
Liste der Anhänge anzeigen (Anzahl: 1)
klar
hier ist so ne datenbank bei den feldern kannst du dir ja unter vielen paar aussuchen, asterm, zster, etc...alles strings danke, martin ps: fib-plus hab ich auch installiert, aber davon versteh ich nix und zeos hatte ich bei mir nie installiert bekommen; hatte es irgendwann aufgegeben... ..wenns klappt sag mir bitte auch wie du's anstellst! |
Re: unicode_fss-konvertierung
Hallo Martin, könntest du mir die weiteren Teile der Paradox-tabelle noch nachliefern?
|
Re: unicode_fss-konvertierung
Liste der Anhänge anzeigen (Anzahl: 1)
oh ja, sorry, da gehört ja noch mehr dazu...
danke, martin |
Re: unicode_fss-konvertierung
Liste der Anhänge anzeigen (Anzahl: 1)
Mit Zeos gehts
|
Re: unicode_fss-konvertierung
|
Re: unicode_fss-konvertierung
hey,
ihr kennt euch doch bestimmt mit sowas aus: habe rausgefunden, dass ich die umwandlung auch mit den ibx-komponenten hinbekomme, vorausgesetzt ich wandle die strings vor speicherung in widestrings um; eine passende funktion dafür hab ich schon gefunden:
Delphi-Quellcode:
Mein Problem ist folgendes: ich muss der funktion ja eine codepage in form eines numerischne werts übergeben und ich find leider nicht wo steht, welcher wert welcher codepage entspricht...hab durch ausprobieren schon mal rausgefunden, dass der wert für win1252 = 1 ist aber wie ist er bei anderen codepages...irgendwo muss das doch dokumentiert sein...
{:Converts Ansi string to Unicode string using specified code page.
@param s Ansi string. @param codePage Code page to be used in conversion. @returns Converted wide string. } function StringToWideString(const s: AnsiString; codePage: Word): WideString; var l: integer; begin if s = '' then Result := '' else begin l := MultiByteToWideChar(codePage, MB_PRECOMPOSED, PChar(@s[1]), - 1, nil, 0); SetLength(Result, l - 1); if l > 1 then MultiByteToWideChar(CodePage, MB_PRECOMPOSED, PChar(@s[1]), - 1, PWideChar(@Result[1]), l - 1); end; end; { StringToWideString } danke, martin |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:05 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