DBT Datei ohne DBF [ERLEDIGT]

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21248
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 211 Mal
Danksagung erhalten: 71 Mal

DBT Datei ohne DBF [ERLEDIGT]

Beitrag von Manfred »

Hi,

ich habe gerade ein wenig in alten Daten herumgewühlt und eine DBT Datei gefunden. Ich weiß zwar, zu welcher DB die gehört, aber es sind nicht mehr alle Sätze dazu da und wohl auch das Memofeld fehlt.

Kann man mit der DBT Datei noch irgendwas anfangen, oder wie sieht das aus?
Zuletzt geändert von Manfred am Mo, 24. Nov 2008 14:53, insgesamt 1-mal geändert.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1931
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag von Rolf Ramacher »

Hi Manfred,

als das Memofeld muß ja vorhanden sein, wie willst du sonst die Texte lesen.
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21248
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 211 Mal
Danksagung erhalten: 71 Mal

Beitrag von Manfred »

Hi,

ich denke mal, dass über das Memofeld die Zuordnung zueinander gamacht wird. Es müßte doch aber irgendwie möglich sein, die DBT trotzdem auszulesen und nachzusehen, was denn da noch so alles drin steht.

Das ist jetzt reine Neugier von mir. Die Datei an sich ist nicht wichtig, aber wer weiß, wozu das noch in ferner Zukunft gut sein kann so etwas zu wissen, oder zu können.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14662
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Hallo Manfred,

was meinst Du denn mit "was anfangen"?

Wenn die dbf fehlt bzw. unvollständig ist, dann hast Du natürlich ein Problem, die Memo-Daten ordnungsgemäß auszulesen. Weil ja die Satzzeiger fehlen. Du könntest höchstens versuchen, eine dbf mit entsprechendem Namen und mit Memo-Fed zu erstellen mit der passenden Anzahl an Datensätzen. In der Hoffnung, daß die Zeger dann schon passen werden.

Ansonsten kann man die Memo-Datei natürlich auch mit einem Editor auslesen. Allerdings dann ohne jegliche Zuordnung. Aber wenigstens hättest Du die Texte zur Verfügung.

Jan
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9394
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 105 Mal
Danksagung erhalten: 364 Mal
Kontaktdaten:

Beitrag von Tom »

Der Offset, ab wo ein Text zu einem bestimmten Datensatz steht, befindet sich in der DBF (!), nicht in der DBT. Deshalb macht es keinen Sinn, eine ähnlich strukturierte DBF zu erzeugen und zu hoffen, die DBT würde damit funzen.
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14662
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Hallo Tom,

danke für den Hinweis. Ich war mir nicht sicher, wie eng das verknüpft ist. Deswegen "versuchen". Aber wenn das halt nicht geht ...

Jan
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9394
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 105 Mal
Danksagung erhalten: 364 Mal
Kontaktdaten:

Beitrag von Tom »

Das ist bei dBaseIII-Formaten ein zehnbytiger Zeiger (ASCII-Zahl) in der DBF-Datei, der auf einen Block innerhalb der DBT verweist. Das Ende des dazugehörigen Textes kann man in der DBT am Hex-Code 1AH erkennen. Wenn ein Memofeld bearbeitet wird, hängt auch Xbase++ den veränderten Text einfach ans Ende der Memodatei, er ist dann ggf. mehrfach vorhanden. Theoretisch wäre es also möglich, eine neue DBF derart zu manipulieren, daß sie mit einer bereits bestehenden DBT arbeitet (zumal Feldnamen NICHT in der DBT abgebildet werden), aber das wäre eine Menge Fummelarbeit. Die Texte in der DBT sind aber in Klarschrift (OEM ASCII) verfügbar, man kann also auch mit einem Editor darin herumeiern.
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21248
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 211 Mal
Danksagung erhalten: 71 Mal

Beitrag von Manfred »

Hi,

herumeiern, das ist der richtig Ausdruck. Naja, man kann etwas lesen. Ich war halt interessiert, ob es irgendwie möglich wäre.

Ah, ich habe gerade mal mit dem Totalcommander die DBT eingelesen und aus reiner Neugier von binär auf Text umgeschaltet. Naja, nicht die Kröung, aber es ist schon wesentlich lesbarer.

So wie ich es jetzt aber in Kürze verstanden habe: Zuordnung Dbf-Dbt kaputt, Pech gehabt.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9394
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 105 Mal
Danksagung erhalten: 364 Mal
Kontaktdaten:

Beitrag von Tom »

Hallo, Manfred.

Vereinfacht gesagt - ja, leider.

Die DBT "weiß" nicht, was sie tut und welche Daten sie hält. Es können ja auch mehrere Memofelder in der DBF vorhanden sein. Deren Inhalte werden einfach immer an die DBT angehängt und mit 1AH beendet, und dann wird in der DBF der Blockzeiger aktualisiert. Im Prinzip könntest Du die Anzahl 1AHs prüfen und eine DBF mit Memo erzeugen, die eine entsprechende Zahl Datensätze enthält, aber keine Einträge im Memo (oder einen für Testzwecke). Dann müßtest Du herausfummeln, wo der jeweilige Zeiger auf die DBT steht. Den könntest Du dann mit einem Hex-Editor editieren. Keine Gewähr! 8)
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15710
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 73 Mal
Danksagung erhalten: 38 Mal
Kontaktdaten:

Beitrag von brandelh »

Tom hat geschrieben: Wenn ein Memofeld bearbeitet wird, hängt auch Xbase++ den veränderten Text einfach ans Ende der Memodatei, er ist dann ggf. mehrfach vorhanden.
das ist schon seit Clipper 5.0 (oder sogar S87 ?) nicht ganz richtig. Wenn der geänderte Text in den vorhandenen Platz reinpaßt, also nicht mehr 512 Byte Blöcke braucht, dann wird der vorhandene Platz verwendet, die DBT wird nicht größer.
Wenn er zu groß oder neu ist, dann wird hinten angehängt.

Den Inhalt der Datei mit einem Hexeditor oder FOPEN FREAD etc. zu lesen ist so schlecht nicht, solange der Inhalt sinnvoll wiederverwendet werden kann. Was aber überflüssig war und gelöscht wurde, kann man nicht erkennen.
Ob die Mühe lohnt muss man natürlich selbst entscheiden.
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9394
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 105 Mal
Danksagung erhalten: 364 Mal
Kontaktdaten:

Beitrag von Tom »

Wenn der geänderte Text in den vorhandenen Platz reinpaßt, also nicht mehr 512 Byte Blöcke braucht
Stimmt. Mein Fehler.
Herzlich,
Tom
Antworten