Autor Beitrag
Kernel32.dll
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 05.02.05 23:10 
Daniel's Copier Version 1.5 ReRelease

What's that?
"DC" dient dazu, Daten von beschädigten Datenträgern zu retten. Angenommen, ihr habt eine VCD die extrem verkratzt ist. Jetzt wollt ihr die Datei auf der CD unbedingt noch vor dem weiteren Verfall retten. Also benutzt ihr den Windows Explorer und zieht via Copy&Paste die Datei auf den Rechner.
So weit, so gut. Jetzt kann es aber passieren, dass der Windows Explorer auf Grund der beschädigten Datenstruktur sich weigert, die Datei zu kopieren. Es kann auch passieren, dass sich das komplette System aufhängt.

Ja, und?
"DC" ist anders. Das Programm kopiert ohne zu murren eine beschädigte Datei. Sollten die aktuellen Bytes partout nicht lesbar sein, wird einfach weitergesprungen.


ToDo-Liste:
* Rekursive Dateiensuche in Ordnern, um komplette Ordnerinhalte in einem Rutsch zu kopieren. Ist bereits im QT zu finden, ist aber noch zu buggy.
* Zahl der zu lesenden Bytes von 1*1024 - 64*1024 einstellbar machen, um den User selbst entscheiden zu lassen:
Geschwindigkeit <=> Genauigkeit


Noch was:

Je nachdem, wie beschädigt die CD und wie gut euer Laufwerk ist, kann dieser Vorgang mehrere Stunden dauern...

Der Fairness halber verweise ich noch auf das Programm, dass AXMD vorgestellt hat und denselben Dienst leistet wie meins, allerdings mit dem Unterschied, dass meins ein GUI hat, AXMD's hingegen eine Konsolen-App ist. Dadurch bin ich wieder auf mein Projekt gestoßen. Thx.

Das Programm gibbet hier, is ~38KB groß (Exe + Source, NON-VCL)
hometown.aol.de/Bern...ert/programme/dc.zip
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Sa 05.02.05 23:33 
Kernel32.dll hat folgendes geschrieben:
Der Fairness halber verweise ich noch auf das Programm, dass AXMD vorgestellt hat und denselben Dienst leistet wie meins, allerdings mit dem Unterschied, dass meins ein GUI hat, AXMD's hingegen eine Konsolen-App ist. Dadurch bin ich wieder auf mein Projekt gestoßen. Thx.


Ich danke vielmals für die Fairness ;).

Ich wollte dich nur sicherheitshalber darauf hinweisen, dass die Icons, die du verwendest sehr große Änhlichkeiten mit denen von Ahead Nero haben; an deiner Stelle würd ich entweder die von Windows nehmen, selbst welche basteln oder alternativ eines der tausenden Iconspackages verwenden.

Zum Programm:

1.) Dein Programm kopiert extrem langsam; 2min. für 283 MB sind ziemlich viel - noch dazu von Festplatte zu Festplatte (hängeren an separaten IDEs) - Windows ist mehr als doppelt so schnell

2.) Die Fortschrittsanzeige hat - zumindest bei der 283 MB-Datei nicht funktioniert (außer sie is weiß in weiß ;))

3.) NonVCL ist zwar sehr schön, aber warum werden die Dateinamen nicht ganz angezeigt, wenn sie länger sind als das Editfeld

4.) user defined image Das Bild dürfte für sich sprechen; Quelldatei existiert (sogar ausgewählt), Zielordner ebenso. Warum ist "Kopieren" also disabled? Oder ist es generell so, dass man mit deinem Prog nur einmal kopieren kann und dann neu starten muss :?:

AXMD
Kernel32.dll
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 06.02.05 00:35 
zu den Icons: hast recht, is' Nero. Die von Windows sehen doch aber genauso aus, oder? Kannste mir sonst ein Package empfehlen, wo diese Icons im XP-Style existieren?

zu 1) Das liegt an der Kopierroutine:
Mein Programm arbeitet mit einem relativ kleinen Puffer, so dass pro Durchlauf nur 49170 Bytes kopiert werden. Einfach besser für die Genauigkeit

zu 2) Wenn du die *.manifest-Datei löschst, siehst du, warum sie nicht arbeitet :wink:

zu 3) Muss ich noch näher untersuchen....

zu 4) :oops: Da hab' ich wohl 'nen paar Zeilen vergessen... Is' gefixt!
Chatfix
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1583
Erhaltene Danke: 10

Win 10, Win 8, Win 7, Win Vista, Win XP
VB.net (VS 2015), MsSQL (T-SQL), HTML, CSS, PHP, MySQL
BeitragVerfasst: Mi 09.02.05 13:48 
Schönes Programm.
Vielleicht wäre eine Funktion das Log-Fenster zu leeren noch sinnvoll.

Auserdem komisch finde ich das vor dem Starten des Kopiervorgangs im Log steht: "Zieldatei erfolgreich erstellt und geöffnet"

_________________
Gehirn: ein Organ, mit dem wir denken, daß wir denken. - Ambrose Bierce
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Mi 09.02.05 14:02 
Hm... wieder mal ein paar kleinere Fehler gefunden

1.) Wenn eine Datei von einem anderen Prozess verwendet wird, meldet die Log, dass die Datei nicht existiert. Das verwirrt - falls einmal eine Datei wirklich nicht existiert

2.) Warum kann ich Ordner auswählen obwohl dein Programm dann meint, die Datei ... (Ordnerpfad) existiert nicht

3.) Es ist sehr interessant, dass ich den Kopiervorgang starten kann obwohl kein Zielverzeichnis ausgewählt ist - Button disablen!

4.) "Bitte haben Sie etwas Geduld" gehört in eine Statusbar oder ein Label, nicht in eine Log!

5.) (dein 2.) im deinem letzten Beitrag): ehrlich gesagt sehe ich nicht, warum die ProgressBar nicht arbeitet (ohne Manifest tut sie genauso nichts wie mit); das stört bei großen Dateien ziemlich

6.) Eine Dateigröße in KB oder MB - je nach Bedarf - wär nicht schlecht. Wenn schon die Progressbar nicht funktioniert, tu ich mir persönlich schwer, abzuschätzen, wieviel % von 700 MB 297172992 Bytes sind...

7.) Stimme Chatfix in allen seinen Punkten zu

8.) Hab mir den Quelltext nicht angeschaut, aber was schreibst du da dauernd von Genauigkeit? Entweder ich kopier 48 KB oder ich kopier sie nicht, aber wie kann Windows da irgendwas "ungenau" kopieren?

AXMD
Kernel32.dll
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 09.02.05 16:27 
Danke für euer Feedback!

Also:

@chatfix:
Zitat:

Vielleicht wäre eine Funktion das Log-Fenster zu leeren noch sinnvoll.

Hmm...
eigentlich dachte ich es mir so, dass das Log-Fenster den kompletten Programmablauf protokollieren soll.
Ich werde in der nächsten Version eine Funktion einbauen, die es erlaubt, den Inhalt des Fensters zu löschen und alles, was protokolliert wurde, in eine Datei zu speichern.

Zitat:

Auserdem komisch finde ich das vor dem Starten des Kopiervorgangs im Log steht: "Zieldatei erfolgreich erstellt und geöffnet"

Was meinst du mit komisch? Es wird eine Statusmeldung ausgegeben, damit der User weiß, das alles in Ordnung ist und die Zieldatei erfolgreich geöffnet wurde.

_______________________________

@AXMD:
Zitat:

1.) Wenn eine Datei von einem anderen Prozess verwendet wird, meldet die Log, dass die Datei nicht existiert. Das verwirrt - falls einmal eine Datei wirklich nicht existiert

OK, ich werde mal nach einem entsprechenden Rückgabewert der Function "CreateFile" suchen.

Zitat:

2.) Warum kann ich Ordner auswählen obwohl dein Programm dann meint, die Datei ... (Ordnerpfad) existiert nicht

Weil ich den Dialog "SHBrowseForFolder" schon verwende, allerdings die rekursive Dateisuche noch nicht eingebaut haben. Kommt in den nächsten Tagen mit der neuen Version

Zitat:

3.) Es ist sehr interessant, dass ich den Kopiervorgang starten kann obwohl kein Zielverzeichnis ausgewählt ist - Button disablen!

Eigentlich wurde das Edit immer überprüft... Wat hab' ich denn da angestellt??

Zitat:

4.) "Bitte haben Sie etwas Geduld" gehört in eine Statusbar oder ein Label, nicht in eine Log!

Mal schauen....

Zitat:

(dein 2.) im deinem letzten Beitrag): ehrlich gesagt sehe ich nicht, warum die ProgressBar nicht arbeitet (ohne Manifest tut sie genauso nichts wie mit);

Weil sie nicht aktiviert ist?
=> ich hab' die funktion halt noch nicht eingebaut...

Zitat:

6.) Eine Dateigröße in KB oder MB - je nach Bedarf - wär nicht schlecht. Wenn schon die Progressbar nicht funktioniert, tu ich mir persönlich schwer, abzuschätzen, wieviel % von 700 MB 297172992 Bytes sind...

Werd's mir zu Herzen nehmen

Zitat:

8.) Hab mir den Quelltext nicht angeschaut, aber was schreibst du da dauernd von Genauigkeit? Entweder ich kopier 48 KB oder ich kopier sie nicht, aber wie kann Windows da irgendwas "ungenau" kopieren?

Genauigkeit? Du meinst wegen der Puffergröße? Na ja, angenommen, er füllt das Array nur zur Hälfte. Der Rest ist unlesbar. Dann ersetze ich in Zukunft das komplette Array durch ein "Error"-Array. Bei einem 48K Array sind also 24K futsch. Wenn ich jetzt aber die Puffergröße verkleinere, dann kann ich im Endeffekt mehr Bytes retten als mit einem größeren Puffer.
Und da der User selbst entscheiden soll, gibt's eine kleine Trackbar in der neuen Version, mit der die Größe des Puffers von 1 * 1024 bis 64 * 1024 Bytes eingestellt werden kann.


mfg
Daniel
Chatfix
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1583
Erhaltene Danke: 10

Win 10, Win 8, Win 7, Win Vista, Win XP
VB.net (VS 2015), MsSQL (T-SQL), HTML, CSS, PHP, MySQL
BeitragVerfasst: Mi 09.02.05 16:32 
Wie kann die Zieldatei vor dem kopieren geöffnet werden?
Die gibts doch vor dem kopieren noch gar nicht...

_________________
Gehirn: ein Organ, mit dem wir denken, daß wir denken. - Ambrose Bierce
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Mi 09.02.05 16:35 
Denk mal nach: du machst doch auch Rewrite(File) vor WriteLn(File, Bla) oder ;)

AXMD
Chatfix
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1583
Erhaltene Danke: 10

Win 10, Win 8, Win 7, Win Vista, Win XP
VB.net (VS 2015), MsSQL (T-SQL), HTML, CSS, PHP, MySQL
BeitragVerfasst: Mi 09.02.05 16:39 
Sorry aber ich verstehe das trotzdem noch nicht...
Naja ich steh heut schon den ganzen Tag aufm schlauch...

PS: Das Programm nutzen nicht nur Programmierer (bzw. sollen nicht nur programmierer nutzen) die sich damit auskennen, also ist dieser hinweis etwas irreführend...

_________________
Gehirn: ein Organ, mit dem wir denken, daß wir denken. - Ambrose Bierce
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Mi 09.02.05 16:42 
Chatfix hat folgendes geschrieben:
Sorry aber ich verstehe das trotzdem noch nicht...
Naja ich steh heut schon den ganzen Tag aufm schlauch...

PS: Das Programm nutzen nicht nur Programmierer (bzw. sollen nicht nur programmierer nutzen) die sich damit auskennen, also ist dieser hinweis etwas irreführend...


Wo er Recht hat, hat er Recht :)

AXMD
Kernel32.dll
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 09.02.05 19:27 
AXMD hat folgendes geschrieben:
Chatfix hat folgendes geschrieben:
Sorry aber ich verstehe das trotzdem noch nicht...
Naja ich steh heut schon den ganzen Tag aufm schlauch...

PS: Das Programm nutzen nicht nur Programmierer (bzw. sollen nicht nur programmierer nutzen) die sich damit auskennen, also ist dieser hinweis etwas irreführend...


Wo er Recht hat, hat er Recht :)

AXMD


Vielleicht schreib ich 'ne Erklärung in die Hilfe, die ich gerade Verfasse.

@chatfix:

Pass auf:

Du hast dir eine Datei ausgesucht, die du kopieren möchtest. Diese öffnest du jetzt. Da du aber auch deine Daten irgendwo hin kopieren möchtest, muss eine neue Datei in einem von dir frei gewähltem Verzeichnis erstellt werden. Sie zu erstellen genügt aber nicht, denn Windows muss diese Datei auch noch im Schreibmodus öffnen.
Das bewerkstellige ich in beiden Fällen (Quell- und Zieldatei) mit "CreateFile".
"CreateFile" liefert mir ein Handle zurück, mit dem Windows auf die Datei zugreifen kann.
=> Jetzt würde, wenn alles glatt gegangen ist, die Meldung kommen:
"Die Zieldatei %s wurde erfolgreich erstellt und geöffnet"

Jetzt habe ich zwei Handles: Einmal das der zu kopierenden Datei und das der Zieldatei. Und erst jetzt rufe ich die eigentliche Kopierroutine auf:
Readfile bekommt das Handle von der Quelldatei
Writefile bekommt das Handle von der Zieldatei
und beide nutzen den selben Puffer. Readfile liest die Daten aus der Quelldatei in den Puffer und Writefile liest die eben in den Puffer geschriebenen Daten und schreibt sie in die Datei.

Der Puffer ist aber nur maximal 64 * 1024 Bytes groß, so dass die Routine mehrmals durchlaufen werden muss. Und damit sich die im vorherigen Durchgang gelesenen Bytes nicht im Datennirvana verabschieden, müssen wir sie in eine Datei schreiben, am Besten natürlich in die Zieldatei. Daher muss sie vor dem Kopiervorgang bereits erstellt und im Schreibmodus geöffnet wurden sein.


Ich hoffe, ich konnte dir etwas von dem Schlauch 'runterhelfen, auf dem du gestanden hast. :wink:
Chatfix
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1583
Erhaltene Danke: 10

Win 10, Win 8, Win 7, Win Vista, Win XP
VB.net (VS 2015), MsSQL (T-SQL), HTML, CSS, PHP, MySQL
BeitragVerfasst: Mi 09.02.05 20:31 
Jap leuchtet mir ein. Danke.

Vielleicht klingt aber für den Endanwender der Satz "Zieldatei wurde initialisiert." besser.

_________________
Gehirn: ein Organ, mit dem wir denken, daß wir denken. - Ambrose Bierce
Kernel32.dll
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 09.02.05 21:30 
Chatfix hat folgendes geschrieben:
Jap leuchtet mir ein. Danke.

Vielleicht klingt aber für den Endanwender der Satz "Zieldatei wurde initialisiert." besser.


Hmm... Werde drüber nachdenken.
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Mi 16.02.05 14:56 
@Kernel: dein "Konkurrenz"produkt unterstützt nun auch Unterverzeichnisse: www.users.fh-sbg.ac....stp/News/160205.html :twisted:

Ontopic: ist das nur bei mir so oder kommt das "Kopiervorgang wird gestartet [..]" manchmal erst nachdem letzterer schon abgeschlossen ist?

AXMD
Kernel32.dll
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 16.02.05 17:11 
AXMD hat folgendes geschrieben:
@Kernel: dein "Konkurrenz"produkt unterstützt nun auch Unterverzeichnisse: www.users.fh-sbg.ac....stp/News/160205.html :twisted:

Ontopic: ist das nur bei mir so oder kommt das "Kopiervorgang wird gestartet [..]" manchmal erst nachdem letzterer schon abgeschlossen ist?

AXMD


*schnell weiter programmier*

hm... kann ich jetzt so nicht bestätigen, wäre mir neu bzw. ist mir noch nicht aufgefallen. ich werde mal schaun'