Announcement

Collapse
No announcement yet.

header ist beschädigt bei dbase-datenbank!

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • header ist beschädigt bei dbase-datenbank!

    hallo,

    habe für einen freund ein programm programmiert, dass 3 dbase-datenbank<br>
    ausliest und die werte in 3 textdateien schreibt.<br>
    er will, dass wenn der datenbank-header beschädigt ist,<br>
    das programm trotzdem keine fehler ausgibt!!<br>
    wie bekomme ich das hin?

    mfg

    markus
    Herzliche Grüße

    Markus Lemcke
    barrierefreies Webdesign

  • #2
    Hallo Markus,

    im Header einer dBASE-Tabelle stehen die Informationen über den Feldaufbau. Nur wenn diese Daten ausgelesen werden können, kann der Treiber (ob BDE oder nicht) den jeweiligen Datensatz-Offset berechnen, den Dateizeiger positionieren und die berechnete Anzahl von Bytes auslesen. Wenn die Struktur beschädigt ist, geht nichts mehr (es sei denn, mann kodiert die Struktur in einem eigenen Programm, das direkt - ohne den Header-Umweg - auf die DBF-Datei zugreift). Fehlt allerdings nur die MDX-Datei (Index), so kann dies im Header vor dem Zugriff korrigiert werden (indem man ein Byte-Wert an einer feststehenden Offset-Adresse ändert)

    Comment


    • #3
      mhm, weiß heißt das für mich?<br>
      ich schaffe es nicht, dass keine fehlermeldung kommt?<br>
      der rest ist ihm egal!! es darf nur <b>keine</b> fehlermeldung<br>
      kommen!!!<br>

      mfg

      marku
      Herzliche Grüße

      Markus Lemcke
      barrierefreies Webdesign

      Comment


      • #4
        Hallo Markus,

        welche Fehlermeldung kommt? Wenn es sich um eine fehlende Index-Datei handelt, kann das Problem beseitigt werden. Wenn allerdings die Struktur selbst beschädigt ist, hilft nur das letzte Backup

        Comment


        • #5
          Hi Markus,

          mache doch am Anfang Deines Programms einen (Dummy-Leseaufruf), den Du in einem Try-Except-Block kapselst.

          Wenn dann eine Database Exception auftritt, steige ohne Meldung aus dem Programm aus

          Comment


          • #6
            hallo kai,

            könntest du mir mal ein beispiel posten!<br>

            mfg

            marku
            Herzliche Grüße

            Markus Lemcke
            barrierefreies Webdesign

            Comment


            • #7
              <p>Hallo Markus,<br>
              <br>
              für einen Unternehmer, der Programme entwickeln und verkaufen will, dürfte sich so eine Frage gar nicht stellen. Du solltest Dich mal gründlich mit den Hilfedateien beschäftigen.<br>
              <br>
              Folgende Funktion tut das gewünschte. Die Tabelle muß existieren und darf nicht offen sein.<br>
              <pre>
              function CanOpenTable(aTable:TTable):Bool;
              begin
              Result:=True;
              try
              aTable.Open;
              except
              on E:EDatabaseError do
              begin
              Result:=False;
              end; // on
              end; // try
              end; // CanOpenTable
              </pre>
              Benutzen kannst Du sie wie folgt:<br>
              <pre>
              begin
              ...
              ...
              if CanOpenTable(Table1) then
              begin
              end else Close;
              end;
              </pre>
              Gruß Thomas</p&gt

              Comment


              • #8
                hi thomas,

                besten dank!<br>
                das mit dem unternehmer ist nichts geworden, dafür programmiere<br>
                ab nächstes jahr in einer programmierfirma als angestellter!!<br>

                gruß marku
                Herzliche Grüße

                Markus Lemcke
                barrierefreies Webdesign

                Comment

                Working...
                X