Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Tabellen mit fremden NSX-Index öffnen und lösen

  Alt 15. Aug 2005, 16:53
Zitat von PASST:
Dh. in der BDE wird u.a. dieses Byte #28 am Anfang eingelesen, um festzustellen mit welchen Bedingungen die Tabelle geöffnet werden muss. Da es sicherlich noch weitere Bedingungen gibt, die beim Öffnen einer dBase-Tabelle beachtet werden müssen, wie kann ich diese in Delphi vorab abfragen? Gibt es da schon vorgefertigte Routinen seitens Delphi?

Meine Idee dazu ist: Im DataSet.BeforeOpen-Ereignis diverse DBErrors vorab abzufangen und auszuwerten. Die Frage bleibt nur welche?
Wenn die BDE die dBase-Datei in der Mache hat, ist es zu spät.
Die BDE ist auch nicht flexibel genug, um hier irgenwie einzugreifen.
Du kannst im BeforeOpen Ereignis prüfen, ob diese Byte #28 <> 0 ist.
Falls ja, könnte man die dBase-Datei kurz vorher patchen:
Delphi-Quellcode:
var
   fs : TfileStream;
   oldbyte , newbyte : char;
begin
   fs : = TfileStream('test.dbf', fmReadWrite or fmShareDenyNone);
   try
     fs.Seek(28);
     fs.Readbuffer(oldbyte, 1);
     newbyte := #0;
     fs.Seek(28);
     fs.WriteBuffer(newByte, 1);
   finally
     fs.Free;
  end;
end;
Das ist alles sehr unsauber, aber dBase war ja noch nie eine richtige Datenbank und du musst
jetzt das völlig veraltete Design ausbaden....

Du solltest erstmal prüfen, ob diese Byte an Position 28 überhaupt die Ursache deiner Probleme sind.
(mit Hexeditor nachschauen, was drin steht, patchen und testen, ob die BDE dann damit klarkommt)
Andreas
  Mit Zitat antworten Zitat