Einlesen mit TDBF

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
MBickel
Beiträge: 16
Registriert: Fr 2. Okt 2009, 10:11
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hessen

Einlesen mit TDBF

Beitrag von MBickel »

Hallo,

beim Einlesen einer älteren DBF-Tabelle mittels TDBF in eine FB-Tabelle habe ich Probleme mit den deutschen Umlauten:
Praktischerweise gibt es folgende Eigenschaft unter TDBF

Code: Alles auswählen

aDbfTranslate(Dbf: TDbf; Src, Dest: PChar; ToOem: Boolean
  ): Integer;
begin
  OemToAnsi(Src,dest);
  Result:=-1;
end;


Das soll wohl unter Delphi gehen, leider nicht unter Lazarus, da hier die Funktion OemToAnsi nicht existiert.

Hat jemand eine Idee, wie man das Umlauteproblem trotzdem lösen kann, ohne die DBF zu verändern (in dBase, Foxpro oder ähnliches).

Viele Grüße
und Danke

Michael
Zuletzt geändert von monta am Fr 2. Okt 2009, 15:47, insgesamt 1-mal geändert.
Grund: Highlighter gesetzt

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Re: Einlesen mit TDBF

Beitrag von monta »

Binde mal die Unit JwaWinUser mit ein.

Dann kannst du auf OemToAnsi zugreifen. (Ich geh davon aus, du arbeitest unter Windows, da es ja ein WinApi-Befehl ist)
Johannes

Kuster Peter
Beiträge: 205
Registriert: So 2. Dez 2007, 20:47
OS, Lazarus, FPC: Windows XP Lazarus immer neueste Version
CPU-Target: xxBit
Wohnort: Schweiz

Re: Einlesen mit TDBF

Beitrag von Kuster Peter »

Hallo Monta

Kannst Du mir einen Link durchgeben, wo man diese Units suchen kann.

Peter

MBickel
Beiträge: 16
Registriert: Fr 2. Okt 2009, 10:11
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hessen

Re: Einlesen mit TDBF

Beitrag von MBickel »

Kuster Peter hat geschrieben:Hallo Monta

Kannst Du mir einen Link durchgeben, wo man diese Units suchen kann.

Peter

ist ok, findet sie ja von alleine!

Vielen Dank
Michael

Kuster Peter
Beiträge: 205
Registriert: So 2. Dez 2007, 20:47
OS, Lazarus, FPC: Windows XP Lazarus immer neueste Version
CPU-Target: xxBit
Wohnort: Schweiz

Re: Einlesen mit TDBF

Beitrag von Kuster Peter »

Ich muss mich korrekt ausdrücken. Ich meinte, wenn ich mal eine Unit brauche, wo kann ich nachsehen, welche Unit ich nehmen muss. Anstelle von Shell api nimmt man Windows, das weis ich unterdessen, weil Monta es mir gesagt hat. Doch ich will ja nicht immer Monta bemühen. Hoffe immer noch auf das Lazarusbuch.

Peter

MBickel
Beiträge: 16
Registriert: Fr 2. Okt 2009, 10:11
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hessen

Re: Einlesen mit TDBF

Beitrag von MBickel »

Kuster Peter hat geschrieben:Ich muss mich korrekt ausdrücken. Ich meinte, wenn ich mal eine Unit brauche, wo kann ich nachsehen, welche Unit ich nehmen muss. Anstelle von Shell api nimmt man Windows, das weis ich unterdessen, weil Monta es mir gesagt hat. Doch ich will ja nicht immer Monta bemühen. Hoffe immer noch auf das Lazarusbuch.

Peter

wenn es die Onlinehilfe nicht bringt, im Zweifel die Delphi-Hilfe (zumindest einen Versuch wert).

baba
Beiträge: 265
Registriert: Mi 4. Apr 2007, 17:47

Re: Einlesen mit TDBF

Beitrag von baba »

Kuster Peter hat geschrieben:Ich muss mich korrekt ausdrücken. Ich meinte, wenn ich mal eine Unit brauche, wo kann ich nachsehen, welche Unit ich nehmen muss. Anstelle von Shell api nimmt man Windows, das weis ich unterdessen, weil Monta es mir gesagt hat. Doch ich will ja nicht immer Monta bemühen. Hoffe immer noch auf das Lazarusbuch.
Peter


http://lazarus-ccr.sourceforge.net/docs/lcl/index-8.html

Baba,

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Re: Einlesen mit TDBF

Beitrag von monta »

Naja...einfach die "Suche in Dateien" eines (beliebigen) Texteditors hab ich verwendet ;)
Johannes

MBickel
Beiträge: 16
Registriert: Fr 2. Okt 2009, 10:11
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hessen

Re: Einlesen mit TDBF

Beitrag von MBickel »

monta hat geschrieben:Naja...einfach die "Suche in Dateien" eines (beliebigen) Texteditors hab ich verwendet ;)


Ich hatte einen Eintrag im FreePascal Bugtracker sowie einen Eintrag in einem anderen Forum gesehen, dass diese Funktion nicht implementiert sei, von daher kam ich nicht auf die Idee, dass da doch Hoffnung besteht. Da ich primär Delphi verwende, bin ich auch (noch) kein Lazarus-Experte, obwohl es ja kein Problem ist zwischen beiden zu wechseln.

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Re: Einlesen mit TDBF

Beitrag von monta »

Naja, nicht implementiert stimmt ja auch soweit, als das du auf diese Art Probleme bekommst, wenn du nicht unter Windows bist.
Es ist also nicht Crossplattform und somit stimmt die Aussage in gewisser Weise schon, das es nicht implementiert ist. Es wird halt nur auf die WinApi durchgereicht.
Johannes

MBickel
Beiträge: 16
Registriert: Fr 2. Okt 2009, 10:11
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hessen

Re: Einlesen mit TDBF

Beitrag von MBickel »

monta hat geschrieben:Naja, nicht implementiert stimmt ja auch soweit, als das du auf diese Art Probleme bekommst, wenn du nicht unter Windows bist.
Es ist also nicht Crossplattform und somit stimmt die Aussage in gewisser Weise schon, das es nicht implementiert ist. Es wird halt nur auf die WinApi durchgereicht.

Ändert leider ohnehin nichts, auch sonst keine der möglichen Lösungsvorschläge, die ich im Netz gefunden habe.
StrReplace hilft leider auch nichts, da nicht jedem Umlaut ein eindeutiges Zeichen gegenübersteht, sonst hätte ich es halt manuell gemacht.

Wenn ich die gleiche (Foxpro-) DBF (CP1252) unter Delphi 2009/TDBF öffne, werden die Umlaute allerdings korrekt dargestellt, d.h. das Problem tritt nur unter Lazarus (praktisch die neueste Version) bzw. der darin enthaltenen TDBF-Version auf.

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Re: Einlesen mit TDBF

Beitrag von monta »

UTFEncode/UTFDecode auch mal probiert?

Wo gibt es denn eigentlich genau die Probleme, in der FB-Datei oder beim anzeigen im Lazarus-Programm?
Hast du eine kleine Beispieldatei, wo man mal probieren kann (ggf. auch per Mail)?
Johannes

MBickel
Beiträge: 16
Registriert: Fr 2. Okt 2009, 10:11
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hessen

Re: Einlesen mit TDBF

Beitrag von MBickel »

monta hat geschrieben:UTFEncode/UTFDecode auch mal probiert?

Nein, bin jetzt noch nicht dazu gekommen, aber hatte es angedacht, werde es mal probieren.
monta hat geschrieben:Wo gibt es denn eigentlich genau die Probleme, in der FB-Datei oder beim anzeigen im Lazarus-Programm?
Hast du eine kleine Beispieldatei, wo man mal probieren kann (ggf. auch per Mail)?


Beim Import - zu Kontrollzwecken - gebe ich eines der Felder in einer Listbox aus, bereits hier oder auch mit Showmessage tritt das Problem auf, halt also zumindest nichts mit Firebird zu tun.

Ich probiere mal obiges aus, vielleicht hilft es. Sicher hat Lazarus halt seine Eigenheiten/Abweichungen zu Delphi, die ich halt nicht kenne, da ich normalerweise mit Delphi arbeite. Weiss jetzt auch nicht, welche Version die Lazarus-TDBF hat buw. ob diese angepasst ist. Die Delphiversion beruht auf 6.91, wenn ich mich recht erinnere, allerdings eine (halbwegs) an Delphi 2009 angepasste Version.

MBickel
Beiträge: 16
Registriert: Fr 2. Okt 2009, 10:11
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hessen

Re: Einlesen mit TDBF

Beitrag von MBickel »

monta hat geschrieben:UTFEncode/UTFDecode auch mal probiert?

das löste das Problem - herzlichen Dank!

Michael

Antworten