berens Posted May 22, 2006 Share Posted May 22, 2006 var i: Integer; begin for i := 0 to DVBViewer.RecordManager.Count-1 do begin DVBViewer.RecordManager.DeleteEntry(DVBViewer.RecordManager.Items[i].recID); end; end; So sollten meines Wissens nach alle bisher aufgenommenen Dateien (auch von Festplatte) gelöscht werden. Leider bleiben diese bisher bestehen und können auch später noch gelistet werden (über Items.Filename etc.). Nach einem Neustart des Programms sind dann alle TV-Kanäle weg! Was nun? Wenn ich die Dateinamen der Videos und .txt Dateien aus dem Aufnahmeordner lösche, muss ich die dann noch irgendwo aus eine Datenbank löschen, oder steht alles in den .txt Dateien? Danke im Vorraus! Quote Link to comment
Guest Lars_MQ Posted May 22, 2006 Share Posted May 22, 2006 for i := 0 to DVBViewer.RecordManager.Count-1 do begin DVBViewer.RecordManager.DeleteEntry(DVBViewer.RecordManager.Items[i].recID); Schlechte Idee. Auf jeden fall beim löschen einer liste immer von oben anfangen! for i := DVBViewer.RecordManager.Count-1 downto 0 do begin Den rest schau ich nachher nach, wenn meine tests mit dem neuen netzwerkstreaming system durch sind Quote Link to comment
berens Posted May 22, 2006 Author Share Posted May 22, 2006 Gut, das würde schonmal einiges erklären. (Siehe auch anderes Thema.) Aber (ich weiss, ich bin nur am fordern) ich denke es wäre schon sinnvoll/wichtig, wenn nach DeleteEntry von deinem Interface selbständig der Wert um 1 verringert wird oder -besser- neu berechnet wird. Quote Link to comment
Guest Lars_MQ Posted May 22, 2006 Share Posted May 22, 2006 Ähm wie soll das gehen? Du zählst von 0 bis 10 hoch und fängst an: 0 löschen -> 9 da 1 löschen -> 8 da, da eins wieder runterrutscht bleibt ein element 0. 2 löschen -> 7 da, eins wieder runtergerutscht. usw. man löscht entweder: while count >0 do delete(0) oder for i:=count-1 downto 0 do delete(i); Probiere es mal mit ner liste. Quote Link to comment
berens Posted May 22, 2006 Author Share Posted May 22, 2006 Öhm, stimmt, da war was ^^ Quote Link to comment
Guest Lars_MQ Posted May 22, 2006 Share Posted May 22, 2006 function TRecordManager.deleteEntry(ID : Integer): Boolean; var mMediaInfo:TRecorddata; begin result := False; if not FRecordDB.GetEntry(ID,@mMediaInfo) then exit; if mMediaInfo.FileName='' then exit; deletefiles(changefileext(mMediaInfo.FileName, '') + '*.*'); // splittet files and info.txt files if FRecorddb.DeleteEntry(@mMediaInfo) and fMediaDB.DeleteEntry(mMediaInfo.FileName) then begin SetLength(FItems,0); result := True; end; end; So das ist der Code, der dahinter steht. Ich seh schon, da fehlen noch kriterien, für den worst case, der eigentlich nicht auftreten darf (folder oder filename=''). Das wird schon beim anlegen im vcr-engine verhindert, allerdings manchmal bringen user sachen fertig, die man nie für möglich gehalten hat (siehe meine sig ). Quote Link to comment
berens Posted May 22, 2006 Author Share Posted May 22, 2006 Dachte, würdest das selbst sehen, bitte dringend lesen: http://www.DVBViewer.com/forum/index.php?showtopic=12668 Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.