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 user profile iconChristian 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)


Delete - Mo 11.08.03 11:43



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


AXMD - Sa 06.09.03 14:35

Hi,

hab eine neue Version online, mit der ihr jetzt auch (S)VCDs kopieren könnt.

http://www.8ung.at/dustsigns/dsfl2.exe

MfG AXMD[/url]


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 :)


jaenicke - So 17.02.08 03:21

Wenn das bei dir nicht geht, du aber ein Programm dafür brauchst, dann kannst du es ja mal mit dem IsoBuster [http://www.chip.de/downloads/IsoBuster-2.3_13002746.html] probieren, der funktioniert bei mir sehr gut.


AXMD - So 17.02.08 12:10

Hi!

Eigentlich funktioniert obiger Link gar nicht mehr (403). Die neue URL (von der neuen Version 4) lautet: http://www.dustsigns.de/cgi-bin/index.cgi?submenu=Freeware;content=File%20Copier;lang=

AXMD