Entwickler-Ecke
Freeware Projekte - Alles kopieren: DSFLCOPY
AXMD - Mo 10.02.03 16:37
Titel: Alles kopieren: DSFLCOPY
Hi,
habe mal ein kleines Tool geproggt, das Dateien kopieren kann: + Geschwindigkeitsanzeige... usw. - beschädigte Teile werden übergangen.
Beispiel: CD hat kleinen Kratzer - Win kann die letzten 10 Minuten eines Videos nicht kopieren. DSFLCOPY kopierts trotzdem! Teile, die nicht mehr gelesen werden können, werden einfach nicht geschrieben. Vorteil: vom Video sind zwar die letzten 10 Minuten voller Fehler - aber der Rest geht.
Das Tool ist 192 KB groß und ist schon etwas älter (~ 1/2 Jahr). Hab gestern noch den letzten "Schliff" gemacht: die "Oberfläche" angepasst.
http://www.dustsigns.de/cgi-bin/index.cgi?submenu=Freeware;content=File%20Copier;lang=
Eure Meinung würde mich interessieren,
So long,
AXMD
PS.: Eigentlich wollte ich das Tool nicht veröffentlichen, weil ich dachte, dass es vielleicht zu simpel sei, aber ein Freund hat mir geraten, ich solle es einfach mal posten...
Moderiert von
Christian S.: Downloadlink aktualisiert
Delete - Mo 10.02.03 17:04
Rechte Maustaste: Ziel speichern unter!
Nicht schlecht. Nur etwas langsam oder?
Delete - Mo 10.02.03 17:07
Titel: Re: Alles kopieren: DSFLCOPY
| AXMD hat folgendes geschrieben: |
| Win kann die letzten 10 Minuten eines Videos nicht kopieren. DSFLCOPY kopierts trotzdem! Teile, die nicht mehr gelesen werden können, werden einfach nicht geschrieben. Vorteil: vom Video sind zwar die letzten 10 Minuten voller Fehler - aber der Rest geht. |
:mrgreen:
Stelle ich mir gerade vor: Da ja Hollywood und Babelsberg immer noch Filme nach dem Schema F drehen, in denen die Auflösung und das große Finale in den letzten 10 Minuten kommt, ist´s natürlich ... äh ... :wink: ...
Sorry, AXMD. Zum Programm habe ich nichts zu sagen; ich hab´s nicht ausprobiert. Aber der oben zitierte Satz ist zu schön. :)
AXMD - Mo 10.02.03 17:55
@LUCKIE: Wieso langsam?
Außerdem: mich würde interessieren, wer schon erflogreich verloren geglaubte Dateien wiederherstellen konnte...
So long,
AXMD
Anonymous - Mo 10.02.03 18:10
Es gab ja früher das Programm VGA-Copy. Das kopierte Disketten auf Disketten gut und schnell. Aber auch zu einen anderen Sache war es gut - zum lesen fast zerstörter Disketten. Im Gegensatz zu dem normalen DOS-Copiervorgang, der nach zwei oder drei Leseversuchen den Vorgang abbrach, konnte man bei VGA Copy einstellen wie oft er den Block lesen sollte. Und manchmal war es genug und man hat die Daten noch rauslesen können.
Vieleicht wäre das auch eine gute Erweiterung für dein Programm. Vieleicht funktioniert es aber bereits so. :)
AXMD - Mo 10.02.03 18:12
@POPOV: nein, es arbeitet (noch) nicht so, aber THX für den Tipp.
AXMD
hitstec - Mi 12.02.03 22:23
Ziemlich gut das Tool. Die Benutzeroberfläche ist ein bißchen umständlich, aber im Notfall tut es seinen Dienst.
Dass das Prog langsam sein soll, kann ich nicht bestätigen. Das Windows-Kopieren dauert, wie nicht anders zu erwarten, ca. genau so lang.
Folgendes: Schreibgeschützte Dateien kann das Tool irgendwie nicht kopieren. Eine Fehlermeldung erscheint "Sourcefile not found or broken".
???
System: Windows 2000 SP3
AXMD - Fr 14.02.03 18:17
Hi,
das Problem ist mir bekannt. Keine Ahnung, wieso mein Tool keine schreibgeschützten Files will. Ich vermute mal, dass das damit zu tun hat, dass es versucht, Dateien mit Assign und Reset zu öffnen.
Kannst du von CD auch nicht kopieren?
AXMD
hitstec - Fr 14.02.03 18:42
Ne, von CD geht es auch nicht -> "Sourcefile not found or broken" kommt.
:cry:
AXMD - Fr 14.02.03 18:44
Sch*****.
Jemand eine Idee, wie man das ändern könnte :cry:
AXMD
Aya - Fr 14.02.03 19:08
Hi,
öffne die datei einfach als ReadOnly.. :)
Quelltext
1: 2: 3:
| AssignFile(f,...); FileMode:=0; // Wichtig!! Bedeutet ReadOnly-Öffnen Reset(f); |
Au'revoir,
Aya
AXMD - Fr 14.02.03 19:27
THX, Aya! Das wird's sein! Kann's leider noch nicht ausprobieren, aber danke dir trotzdem.
AXMD
AXMD - Mo 17.02.03 11:56
Danke vielmals, Aya! Jetzt geht's!
Hab die neue Version jetzt raufgeladen (mit mehreren neuen Features):
-> für all diejenigen, denen der Kopiervorgang zu langsam war: man kann nun eine variable Blockgröße einstellen
-> eine Restzeit-Anzeige und (das war vielleicht kompliziert :wink: )
-> einen Pause-Button.
Meinungen wären mir wichtig,
AXMD
Tino - Mo 17.02.03 12:09
Wenn ich die Blockgröße ändern möchte und dabei aber auf Abbrechen klicke kommt trotzdem eine Meldung das der Wert erfolgreich gesetzt wurde. Es handelt sich zwar nicht um den eingtippten Wert sondern um den alten Wertn. Allerdings verwirrt ein wenig die Meldung. Beim Abbrechen sollte also meiner Meinung nach keine Meldung kommen!
Gruß
TINO
torstenheinze - Mo 17.02.03 13:03
nach dem kopieren geht (nicht im Hinweisfenster sondern auf dem hauptfenster) die eslapsed-time weiter, lasse sie nach beendigung des kopierens stehen bleiben
AXMD - Mo 17.02.03 15:07
Gut, werde ich ändern. Was mich eigentlich mehr interessieren würde: wer von euch hat schon Erfolge mit defekten Datenträgern, von denen erfolgreich kopiert werden konnte.
@TINO: Ich hab mich schon immer gefragt, wie man herausfindet, ob "Abbrechen" oder "OK" geklickt wurde, denn das Result ist das Gleiche (Eingabe).
So long,
AXMD
Tino - Mo 17.02.03 15:47
| AXMD hat folgendes geschrieben: |
| Ich hab mich schon immer gefragt, wie man herausfindet, ob "Abbrechen" oder "OK" geklickt wurde, denn das Result ist das Gleiche (Eingabe). |
Du benutzt bestimmt die Funktion
InputBox, oder? Benutze besser
InputQuery. Schau mal in der Hilfe nach... dort befindet sich auch ein Beispiel!
Gruß
TINO
AXMD - Mo 17.02.03 15:52
Werd ich mal probieren. THX vielmals.
AXMD
AXMD - Mi 19.02.03 08:53
Hi,
habe nun das Programm teilweise etwas abgeändert: eskopiert schneller aufgrund einer optimierten Anzeige-Routine. Außerdem ist das Inputbox-"Problem" gelöst.
Bitte "#0 filling" nicht verwenden - das funktioniert noch nicht. Mein Problem: ich versuche, über BlockWrite die Bytes, die in der Quelldatei fehlerhaft waren, durch #0 zu ersetzen. Allerdings liefert IOResult wie auch GetLastError: 87. Mit SysErrorMessage als Text: "Der Parameter stimmt nicht". Das ist mir allerdings schleierhaft, denn der selbe Quelltext läuft alleine ohne Probleme. Ich habe schon versucht, Filemode zu ändern - hat aber auch nichts gebracht.
Könnte mir jemand helfen? Vielleicht noch ein paar Daten: ich verwende ein Array of Char, das mit SetLength auf die Größe (Puffergröße - korrekt gelesene Bytes) gesetzt wird. Anschließend werden die Einträge mit #0 gefüllt.
Wie ich beim Debuggen bereits gesehen habe, werden alle Variablen korrekt übergeben - trotzdem ist das Resultat der Schreibaktion (vierter, optionaler Parameter von BlockRead) 0. Die BlockWrite-Prozedur:
Quelltext
1:
| BlockWrite(f, buffer, Length(buffer), erfolgreichgeschrieben) |
buffer ist wie erwähnt ein Array of Char.
Who can help?
AXMD
AXMD - Do 20.02.03 08:46
Hi,
habe das Problem gestern noch gelöst. Der Fehler war folgender: das Array of Char funktioniert bei Binärdateien nicht. Wenn man es durch einen Pointer ersetzt, funktioniert das Ganze (habe ich zufällig herausgefunden).
Die Performance wurde noch einmal optimiert und auch das #0 filling ist jetzt vollständig implementiert und funktionsfähig. Während des Kopiervorgangs kann es sogar abgeschalten und wieder eingeschalten bzw. dessen Status abgefragt werden.
Dann zieht mal fleißig :wink:
AXMD
AXMD - Di 11.03.03 08:50
Hi @ALL!
Habe das Programm jetzt noch etwas verbessert. Folgende neune Funktionen sind hinzugekommen:
-> "copy multiple files": mehrere Dateien eines Ordners können durch eine Maske (die auch ausgewertet werden kann) kopiert werden.
-> man kann über den Button "Activate Screensaver" den Screensaver aktivieren/deaktivieren.
-> die Standard-Blockgröße wurde optimiert.
Wichtig noch: da ich nicht weiß, über welche Funktion man herausfinden kann, ob der Screensaver ein/ausgeschaltet ist, ist der Button standardgemäß immer (zumindest derzeit noch) auf "Set screensaver inactive" gesetzt. Wenn mir jemand sagen könnte, wie das geht...
Und noch: der Pause-Button funkioniert im Multifile-Modus noch nicht - genauso wenig wie ein rekursives Durchsuchen des Ordners mit der Dateimaske - das kommt aber noch.
Adresse ist noch gleich, freue mich auf eure Kritiken,
AXMD
AXMD - Mi 12.03.03 14:10
Hi,
"Screensaver-Button-Problem" gelöst!
AXMD
hitstec - Mi 12.03.03 16:05
Wenn ich versuche von meinem DVD-Laufwerk (K) ein MPEG Stream einer SVCD zu kopieren, dann gibt er mir immer die Meldung "Invalid path(s): retry!" aus.
Über Multi Files scheint das zu gehen.
hitstec - Mi 12.03.03 16:20
Außerdem friert das Tool ein, sobald es mit "kritischen Datenmengen" zu tun hat, also zum Bsp. Sektoren auf einer CD, die schlecht gelesen werden können.
Das ist ärgerlich, weil du darauf den Status nicht mehr erkennst.
Ich würde dir empfehlen die Lese-Schreibfunktionen in einen Therad zu verlagern und die Ausgabe nach VCL zu syncronisieren.
Ansonsten ist das Tool super, ich hoffe nur das ich meine 800 MB File bei einer Geschwindigkeit von wenigen KB die Minute noch in deisem Jahr kopiert habe. :wink:
AXMD - Do 13.03.03 08:48
Hi,
| Zitat: |
| Ansonsten ist das Tool super, ich hoffe nur das ich meine 800 MB File bei einer Geschwindigkeit von wenigen KB die Minute noch in deisem Jahr kopiert habe. |
Naja, immer noch besser, als die Daten bleiben verloren, weil man die CD mit dem WIN-Explorer nicht mehr kopieren kann, oder?
Zum Problem mit deinem DVD-Laufwerk: das Programm öffnet die Datei zum Kopieren. Das heißt, sie darf von keinem anderem Programm benutzt werden. Finde das Problem aber auch seltsam.
Zu
| Zitat: |
| Ich würde dir empfehlen die Lese-Schreibfunktionen in einen Therad zu verlagern und die Ausgabe nach VCL zu syncronisieren. |
: nun ja, wenn ich irgendwann mal Zeit habe, mir ein Thread-Tutorial durchzulesen... hab nämlich noch nie mit Threads programmiert und habe z.Z. neben der Schule 0 Zeit!
So long,
AXMD
UGrohne - Fr 09.05.03 10:45
So, hab Dein Tool gerade mal ein bisschen zweckentfremdet. Hat aber net wirklich funktioniert.
Da nämlich gestern mein Server wohl aus Hitzegründen abgeraucht ist, musste ich versuchen von einem RAID-Array, das extrem viele Fehler enthielt, Dateien runterzukopieren, hat aber nicht ganz geklappt. Windows bringt beim Kopieren immer E/A-Fehler.
Hast Du dazu vielleicht eine Lösung? Vielleicht sogar mit Deinem Programm? Bin nämlich am Verzweifeln hier.
AXMD - So 11.05.03 19:57
Hi,
meinst du E/A-Fehler in Form von Bluescreens oder "normale" Fehlermeldungen? Wenn Windows selbst motzt, dann gibt es für deine Daten wohl wenig Chance auf Rettung, da ich mit Read-/WriteBlock-anweisungen arbeite und es keine mir bekannte Methode gibt, die die Daten direkt auslesen kann (Streams & Co bringen bei beschädigten Dateien Delphi-Exceptions).
Wenn du mir eine Funktion sagen kannst, die "tiefer" als BlockRead zugreifen kann, könnte ich das Tool entsprechend umprogrammieren. Ansonsten tut es mir um deine Daten ehrlich leid...
AXMD
UGrohne - So 11.05.03 20:45
Naja, es waren Windows-Meldungen. Is aber eh zu spät, hab das RAID-Array gelöscht. Eine wirklich wichtige Datei, die ich wirklich noch brauchte konnte ich retten, da sie kleiner als die Blocgröße des Arrays war und deshalb auf einer Platte war.
Trotzdem danke für die,w enn auch negative :wink:, Antwort
Delete - Mo 11.08.03 10:26
Hab gleich was zur neuen Version (s. auch geschlossenes Topic)
- Bei "Enhanced Settings" fehlt das N in "enhanced".
- Wenn sich das Programm bei "Evaluate mask" beschwert, dass ich erst einen Pfad angeben muss, warum deaktivierst du den Button und das Editfeld daneben nicht, bis ein Ordner ausgewählt wurde?
- Is a bitzerli nervig, dass mich das Programm darüber belehrt, dass ich den Abbrechen-Button bei "Set blocksize" gewählt habe.
- Schlön wär´s schon, wenn die Einstellungen gespeichert werden. Muss ja nicht in der Registry sein, und es sollte auch keine INI-Datei in einem Systemordner sein. Aber wie wär´s mit ´ner INI im Programmverzeichnis? Oder (Multi-User-gerecht) im "Eigene Dateien"-Ordner des angemeldeten Benutzers ... oder ... oder ...
- Kein Minimieren-Knopf? Schade.
Delete - Mo 11.08.03 11:43
- Ich hab eine Datei kopiert und wollte dann noch eine machen. Aber leider hat sich das Programm ungefragt beendet.
- Ich wollte eine Datei kopieren und dabei umbennen. Ging auch nicht.
- Warum wird die eingestellte Blockgröße niergens angezeigt?
- Warum schließt ein Klick auf "Abort" das Fenster? Warum macht der Button nicht das, was man erwartet? Einen Vorgang abbrechen.
- "files 115/115 (100% if done)" Was soll das heißen?
- sagte ich schon, dass es nervt, wenn es sich andauernd selbst beendet?
- Der Timer läuft nach Beendigung noch weiter.
- Die Buttons auf dem Fortschrittsanzeige Fenster kannst du vergessen. Praktisch nicht anklickbar. Ich habe 115 Dateien kopiert und hat selbst bei einer 2 MB Datei keine Chance da irgendwas zu klicken. Nachher geht logischewrweise auch nicht mehr, da dein Programm ja der Meinung ist, es müßte mir vorschreiben, wann ich mit kopieren fertig bin.
Ich habe doch eine 1,2 GB Datei gefunden. Sehr parktisch, da wird mir in einer Messagebox angezeigt, was ich eingestellt habe. Warum wird das nicht in einem Label angezeigt? Braucht es dafür unbedingt eine Messagebox, die alles anhält?
- Ach, hatte ich schon gesagt, dass es nervt, dass es sich von alleien ungefragt beendet?`Macht das dein delphi nach dem Kopieren auch immer so? Meins nicht.
- Warum kann ich bei "multiple files" nur ganze Ordner auswählen? Ich hätte aber gerne nur diese und jene und datei kopiert. Jetzt muß ich es doch einzeln machen. Und da sich dein Programm ja von selbst beendet... es müßte also heißen: "Copy folder". Mehrer Dateien kann ich ja gar nicht explizit auswählen.
- Sagte ich schon... *grrr* Jetzt starte ich es zum fünften mal neu.
- Wenn ich es minimiere legt es sich unten auf die Taskleiste. was soll denn das?
AXMD - Do 21.08.03 19:24
Hi,
es sollten nun alle Fehler beseitigt sein. Wenn ih das Ding noch heute zum Hochladen kriege (Server spinnt), könnt ihrs heute noch testen ;)
AXMD
JayEff - So 17.02.08 03:07
| Zitat: |
---------------------------
16 bit MS-DOS Subsystem
---------------------------
C:\Users\Jan\Desktop\dsfl2.exe
The NTVDM CPU has encountered an illegal instruction.
CS:1203 IP:018f OP:63 6c 69 65 6e Choose 'Close' to terminate the application.
---------------------------
Schließen Ignorieren
---------------------------
|
Ist das eine 16 bit Anwendung? Interessant, wie hast du mit Delphi32 eine 16 bit Anwendung geschrieben? :shock:
Ist vllt die Datei auf dem Server kaputt?
Ich bräuchte das Ding vielleicht :)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!