Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Dbase III plus (https://www.delphipraxis.net/74183-dbase-iii-plus.html)

Hansa 29. Jul 2006 21:34

Datenbank: FB • Version: 2.0 • Zugriff über: egal

Dbase III plus
 
Moin,

kennt einer Dbase III plus ? Mir liegen hier einige Dateien vor. DBF und CDX. Die Daten muß ich in FB-DB einlesen. Steht das C eventuell für Clipper ? :gruebel: Irgendwo habe ich eine Meldung gesehen, DBase III plus.

Hat jemand eine Idee, wie man den Dateiinhalt rausbekommt ? Wo gibt es Infos über interne Formate usw. ? Das ganze hat einen traurigen Hintergrund : der, der das programmiert hat macht nichts mehr. Der kann froh sein, wenn er überlebt. Ich habe nur diese Dateien und weiß nicht, wo ich anfangen soll. Wo fängt man denn bei dem Kram am besten an ? :mrgreen: Gibts eventuell sogar irgendwelche Tools dafür ? :shock:

mkinzler 29. Jul 2006 21:48

Re: Dbase III plus
 
U.u lassen sich dBase-Tabellen mit Indizes, die sich mit der BDE nicht öffen lassen mit TDBF lesen.

TBx 29. Jul 2006 21:51

Re: Dbase III plus
 
Hallo Hansa!

Versuchs mal hiermit: IB Datapump von CleverComponents.

Hope it helps

onlinekater

mikhal 30. Jul 2006 08:59

Re: Dbase III plus
 
Schau mal hier nach, wie eine DBF und seine abhängigen Dateien für dBase aufgebaut sind.

Grüße
Mikhal

Hansa 30. Jul 2006 19:43

Re: Dbase III plus
 
Hi, das da sieht schwer nach viel Arbeit aus. Folgende Fragen sind bereits aufgetaucht : was hat es mit TDBF (Tip von mkinzler) auf sich ? Download ist noch nicht durchgeführt, weil auch bei Sourceforge nicht genau steht, was damit ist. Auch der Tip vom onlinekater sieht gut aus. Das läßt sich aber alles nur schwer verifizieren mit Hexeditor. Habe eine Datei im Blickpunkt. Nach meiner Zählung sind das 43 Datensätze, im Header (Byte 10-11) steht : 06 80. Das paßt nicht richtig. Dannn noch das IBDatapump. Sieht gut aus, es existiert sogar ein IBExpert Plugin. Aber : wo wird die Quelle angegeben ? "error with bdeDB Alias" Gebe ich als Dateiname nichts ein, dann kommt bei Test-connection "passed". Fragen über Fragen. 8)

mkinzler 30. Jul 2006 19:52

Re: Dbase III plus
 
Zitat:

was hat es mit TDBF (Tip von mkinzler) auf sich ? Download ist noch nicht durchgeführt, weil auch bei Sourceforge nicht genau steht, was damit ist.
TDbf ist eine Komponente, mit der man direkt auf Tabellen xBase-kompatibler Datenbanksysteme zugreifen kann ( dBase, Clipper, Foxpro). Im Unterschied zur BDE bringen ihn spezielle Indizes von Clipper und Foxpro nicht aus dem Tritt. Nachteil: kein SQL.

Hansa 30. Jul 2006 19:59

Re: Dbase III plus
 
Ich brauch nur die reinen Daten. Die DB-Strukturen passen sowieso nicht. Am besten wäre sogar reiner Text. Geht das damit ? Egal, lade das jetzt mal runter. Irgendeinen Helpfile usw. werden sie ja wohl haben. 8)

mkinzler 30. Jul 2006 20:02

Re: Dbase III plus
 
Zitat:

ich brauch nur die reinen Daten. Die DB-Strukturen passen sowieso nicht. Am besten wäre sogar reiner Text.
Die Komponente ist quasi ne TTable.

Klaus01 31. Jul 2006 07:02

Re: Dbase III plus
 
Vielleicht kann Dir das ja weiterhelfen: dbf2csv
Du findest es hier: http://www.dirfile.com/dbf2csv.htm


Grüße
Klaus

Hansa 31. Jul 2006 11:46

Re: Dbase III plus
 
Ah ja. Habe den letzten Tip mal schnell umgesetzt. Müßte fast schon so gehen. Leider aber nur von Hand. Sieht vielleicht noch jemand warum das so nicht geht :

Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
var i : integer;
    DirInfo : TSearchRec;
begin
  i := 0;
  if FindFirst('*.DBF',faArchive,DirInfo) = 0 then repeat
    ShellExecute(0,'open','dbf2csv',PChar (DirInfo.Name),'C:\L',SW_NORMAL);
    i := i + 1;
  until FindNext(DirInfo) <> 0;
  FindClose (DirInfo);
  showmessage (IntToStr (i));
end;
Was ist an dem shellexecute falsch ?

hanspeter 31. Jul 2006 12:05

Re: Dbase III plus
 
Es gibt ein Produkt "Apollo" leider nicht kostenlos und für den Dauerbetrieb nicht ganz fehlerfrei das kann solche Dateien lesen und schreiben.
Hier sollte man das Datenformat von "Clipper" verwenden.
Wenn du nur konvertieren willst, dann sollte die alte BDE helfen. Die ist auf den Borland
Installations - CD noch drauf.
Diese kann DBase+ Dateien wohl lesen.

Gruß Peter

Klaus01 31. Jul 2006 12:28

Re: Dbase III plus
 
Was für einen Fehlercode bekommst Du denn zurück?

Delphi-Quellcode:
uses ShellApi;

procedure TForm1.FormCreate(Sender: TObject);
var
  Err: Integer;
begin
  Err:= ShellExecute(0,
               Nil,
               PChar('C:\Programm.exe'),
               Pchar('-Parameter'),
               Pchar('C:\StartDir'),
               SW_NORMAL);
  if Err<>0 then
    Showmessage(ShellExecuteErrMessage(Err));
end;
Eventuell mal so aufrufen wie in dem obigen Beispiel.

Delphi-Quellcode:
Function ShellExecuteErrMessage(int_Code: INTEGER): STRING;
 //Gibt die passenede Fehlermeldung zum ShellExecute Fehlercode zurück
Begin
  CASE int_code OF
     0: result := 'Zuwenig Speicher, ausführbare Datei war zerstört, Relokationswerte waren ungültig';
     2: result := 'Datei wurde nicht gefunden.';
     3: result := 'Verzeichnis wurde nicht gefunden.';
     5: result := 'Fehler beim gemeinsamen Zugriff auf eine Datei im Netz oder Fehler beim Zugriff auf eine gesperrte Datei im Netz.';
     6: result := 'Bibliothek forderte separate Datensegmente für jede Task an.';
     8: result := 'Zuwenig Speicher, um die Anwendung zu starten.';
    10: result := 'Falsche Windows-Version.';
    11: result := 'Ungültige ausführbare Datei. Entweder keine Windows-Anwendung oder Fehler in der EXE-Datei.';
    12: result := 'Anwendung für ein anderes Betriebssystem.';
    13: result := 'Anwendung für MS-DOS 4.0.';
    14: result := 'Typ der ausführbaren Datei unbekannt.';
    15: result := 'Versuch, eine Real-Mode-Anwendung (für eine frühere Windows-Version) zu laden.';
    16: result := 'Versuch, eine zweite Instanz einer ausführbaren Datei mit mehreren Datensegmenten die nicht als nur lesbar gekennzeichnet waren, zu laden.';
    19: result := 'Versuch, eine komprimierte ausführbare Datei zu laden.' + #13 + 'Die Datei muß dekomprimiert werden, bevor sie geladen werden kann.';
    20: result := 'Ungültige dynamische Linkbibliothek (DLL).' + #13 + 'Eine der DLLs, die benötigt wurde, um die Anwendung auszuführen, war beschädigt.';
  ELSE
    result := 'Ein Unbekannter Fehler ist aufgetreten. (' + IntToStr(int_code) + ')';
  END;
End;
Grüße
Klaus

joachimd 31. Jul 2006 12:28

Re: Dbase III plus
 
Zitat:

Zitat von Hansa
Ich brauch nur die reinen Daten. Die DB-Strukturen passen sowieso nicht. Am besten wäre sogar reiner Text. Geht das damit ? Egal, lade das jetzt mal runter. Irgendeinen Helpfile usw. werden sie ja wohl haben. 8)

Advantage kann DBase III+ native verarbeiten. Local Server und die Delphi-Komponenten gibt es kostenfrei: ADS.

dataspider 31. Jul 2006 12:42

Re: Dbase III plus
 
Zitat:

Zitat von joachimd
Advantage kann DBase III+ native verarbeiten. Local Server und die Delphi-Komponenten gibt es kostenfrei: ADS.

Kann ich nur empfehlen. Ich mach Alles, was DBase betrifft, mit diesen Komponenten.

Frank

Hansa 31. Jul 2006 12:52

Re: Dbase III plus
 
Wow, fantastische Effekte. :shock: Von 160 DBF gibts jetzt 129 CSV. Soviele Dos-Boxen sind auch auf und dann war der Speicher am Ende. :mrgreen: 31 fehlen wohl deshalb.

relevante Codezeile :

Delphi-Quellcode:
    Err := ShellExecute(0,nil,PChar ('dbf2csv'),PChar (DirInfo.Name),'C:\L',SW_NORMAL);
Err konnte ich gerade noch lesen : 42. Was stimmt da nicht ?

Klaus01 31. Jul 2006 13:00

Re: Dbase III plus
 
Zitat:

Per the Win32 SDK help file -


Return Values


If the function succeeds, the return value is the instance handle of the
application that was run, or the handle of a dynamic data exchange (DDE)
server application. If the function fails, the return value is an error
value that is less than
or equal to 32. The following table lists these error values:
Vielleicht solltest Du versuchen die Anzahl der Konvertierungen die gleichzeitig laufen
zu begrenzen. Vielleicht auf 20-30;

Grüße
Klaus

Hansa 31. Jul 2006 13:11

Re: Dbase III plus
 
Ne, ich Depp muß auch irgendwann mal Close sagen. :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:42 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-2025 by Thomas Breitkreuz