AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi unicode_fss-konvertierung
Thema durchsuchen
Ansicht
Themen-Optionen

unicode_fss-konvertierung

Ein Thema von sancho1980 · begonnen am 19. Jun 2006 · letzter Beitrag vom 22. Jun 2006
Antwort Antwort
Seite 1 von 2  1 2      
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#1

unicode_fss-konvertierung

  Alt 19. Jun 2006, 19:38
Datenbank: firebird 1.5 • Zugriff über: ibx, ibexpert
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:
var
  ibsf: TIBStringField;
  sf: TStringField;
  
  ibsf.AsString := sf.AsString;
Wie bekomme ich es hin, dass der in ibsf das widestring-äquivalent von sf speichert?
wenn firebird diesen unicode_fss - zeichensatz hat, muss es doch auch möglich sein, da widestrings zu speichern, oder?

danke,

martin
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: unicode_fss-konvertierung

  Alt 19. Jun 2006, 20:02
IBX ist nicht wirklich unicode-fähig.
Aber versuch mal Table.FieldByName(<filedname>).AsWideString Aber wahrscheinlich mußt du wohl auf andere Komponenten umsteigen.
Markus Kinzler
  Mit Zitat antworten Zitat
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#3

Re: unicode_fss-konvertierung

  Alt 19. Jun 2006, 20:12
Zitat von mkinzler:
IBX ist nicht wirklich unicode-fähig.
Aber versuch mal Table.FieldByName(<filedname>).AsWideString Aber wahrscheinlich mußt du wohl auf andere Komponenten umsteigen.

ja die eigenschaft gibt es leider nicht

weißt du von irgendwelchen komponenten, mit denen ich das 100% gebacken krieg?

danke,

martin
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: unicode_fss-konvertierung

  Alt 19. Jun 2006, 20:15
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.
Markus Kinzler
  Mit Zitat antworten Zitat
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#5

Re: unicode_fss-konvertierung

  Alt 19. Jun 2006, 20:26
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!
Angehängte Dateien
Dateityp: rar demodeen_145.rar (11,1 KB, 5x aufgerufen)
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: unicode_fss-konvertierung

  Alt 19. Jun 2006, 20:38
Hallo Martin, könntest du mir die weiteren Teile der Paradox-tabelle noch nachliefern?
Markus Kinzler
  Mit Zitat antworten Zitat
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#7

Re: unicode_fss-konvertierung

  Alt 20. Jun 2006, 02:32
oh ja, sorry, da gehört ja noch mehr dazu...
danke,
martin
Angehängte Dateien
Dateityp: rar demodeen_411.rar (38,2 KB, 3x aufgerufen)
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: unicode_fss-konvertierung

  Alt 20. Jun 2006, 06:24
Mit Zeos gehts
Miniaturansicht angehängter Grafiken
fbunicode_162.jpg  
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: unicode_fss-konvertierung

  Alt 20. Jun 2006, 07:29
Die Zugriffskomponenten IBDAC von CoreLabs unterstützen Unicode.

Grüße
Mikhal
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#10

Re: unicode_fss-konvertierung

  Alt 21. Jun 2006, 16:16
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:
{: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 }
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...
danke,

martin
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz