Jump to content

ACHTUNG: IRecordManager.DeleteEntry Datenverlust!


Recommended Posts

Sorry dass ich für das Thema IRecordManager.DeleteEntry jetzt schon das zweite Thema aufmachen, aber das hier ist doch Recht wichtig:

 

DVBViewer.RecordManager.DeleteEntry(DVBViewer.RecordManager.Items[i].recID);

 

Kann unter Umständen zu mehrfachem DATENVERLUST führen, auch in Ordnern, die nichts mit DVBViewer zu tun haben! (Nice to have a Backup!!)

 

 

Teststellung (hoffentlich nachvollziehbar):

 

PC mit (mittlerweile DVB-C ^^ Karte), DVBViewer Pro

Aufnahmeverzeichniss für Video: C:\Dokumente und ~~\~~~~\Eigene Dateien\Record

 

Mein Programm startet Aufnahme und erstellt die Dateien in dem o.g. Ordner. .mpg und .txt jeweils vorhanden.

 

Nun geht mein Programm hin, und löscht (nach Beendigung der Aufnahme oder bevor die überhaupt angefangen hat - es geht hier um ein Beispiel) die ganzen Aufnahmen mit dem o.g. Befehl weg. Siehe http://www.DVBViewer.com/forum/index.php?s...t=0entry95246

 

Nun tritt das dort erwähnte Problem auf, dass die Dateien nicht von der Platte, und auch nicht aus der DVBViewer Datenbank gelöscht werden. Also:

 

Dateien per Hand löschen (die komplette Funktion)

procedure TfrmMain.Button4Click(Sender: TObject);
var
 i: Integer;
 Folder, Filename, Extension: widestring;
begin
 for i := 0 to DVBViewer.RecordManager.Count-1 do begin
   Filename := DVBViewer.RecordManager.Items[i].Filename;
   DVBViewer.RecordManager.DeleteEntry(DVBViewer.RecordManager.Items[i].recID);
   Folder := ExtractFileDir(Filename);
   if copy(Folder, length(folder), 1) <> '\' then folder := Folder + '\';
   Extension := ExtractFileExt(DVBViewer.RecordManager.Items[i].Filename);
   if (Folder <> Filename) and FileExists(Filename) then begin
     DeleteFile(Filename);
   end;
   Filename := Copy(Filename, 1, length(Filename)-length(Extension)) + '.txt';
   if (Folder <> Filename) and FileExists(Filename) then begin
    if not DeleteFile(Filename) then begin
       showmessage(Filename + ' failed');
    end;
   end;
 end;
end;

 

Nach dessen 1x Durchlauf sieht es nun wie folgt aus: Alle Dateien weg (von Deletefile), die Einträge in der Datenbank (Recordmanager) immernoch vorhanden.

 

Programmende.

 

Nichtsahnend startet man nun (mein) Programm erneut, und ruft die selbe Routine auf: Erster Schleifendurchlauf, alles OK.

 

Nach einer getätigten Aufnahme (ca. 3 Sekunden, wie auch immer). Ruft man die Routine erneut auf. Vor/Bei DVBViewer.RecordManager.DeleteEntry(DVBViewer.RecordManager.Items.recID);

einen Breakpoint setzen und euren Eigenen Dateien nochmal zuwinken (von Windows Dateien zählen lassen etc.) und dann diese Zeile aktivieren (F8).

 

Nun nach euren Dateien sehen und feststellen:

-Der komplette Ordner "Record" ist verschwunden

-Meine Musik, Meine Videos etc. sind weg

-Aus den Unterordnern fehlen alle .pas .dpr .bdsproj und viele andere Dateien

 

Des ist wohl meines Wissens nach ein echt gravierendes Problem.

 

Wer von den Programmierern möchte, darf mich gerne anskypen, anrufen, anmailen, wasauchimmer und ich kann das ganze mit http://www.pcvisit.de live vorführen.

 

Respekt für Eure Arbeit bisher, aber mit dem Wissen über dieses Problem kann ich leider DVBViewer nicht beim Kunden installieren...

 

Hoffe auf baldige Antwort, Mfg Mathias

 

Edit: Support.zip angehängt

support.zip

Edited by berens
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...