Entwickler-Ecke
Freeware Projekte - Erweitertes KopierProgramm
Smile - Mo 05.09.05 12:21
Titel: Erweitertes KopierProgramm
Hallo DFler, :wink:
ich stelle hier mal mein "Erweitertes" Kopierprogramm rein da ich hoffe das es jemand interessieren könnte.
"Erweitertes" deswegen da ich bereits ein einfaches mit nur einem Quell- und zwei ZielOrdnern, für einen Kumpel, geschrieben habe.
Bei diesem Programm handelt es sich um ein Kopierprogramm :roll: bei dem man bis zu 100 (leicht erweiterbar) Quell- und ZielOrdner auswählen kann und diese mit einem klick kopieren kann, also jeder Quellordner wird in jeden ZielOrdner kopiert.
Ich würde mich über eure Meinung, Kritik und neue Vorschläge freuen!
Anbei das gepackte Programm, am besten so die exe in einem extra Ordner lassen da eine save.ini erstellt wird.
Das Programm erstellt sonst nirgends was, also Deinstallation = löschen ;)
Da ich das Programm natürlich nicht auf allen Systemen testen konnte weiss ich nicht ob es überall funktionert, geschweige denn irgendwo FataleFehler verursacht, also keine Garantie. 8)
demo88 - Mo 05.09.05 12:56
Also das Programm funktioniert super. Das ist ja schon mal die Hauptsache :wink:
Aber:
-Mir gefält der Aufbau des Programms nicht so gut (Ein bisschen unübersichtlich)
-Du könntest vielleicht vor dem Kopieren eine Abfrage einbauen was mit schon existierenden Dateien passieren soll (Überschreiben, ignorieren, etc...)
Delete - Mo 05.09.05 12:59
Titel: Re: Erweitertes KopierProgramm
Smile hat folgendes geschrieben: |
Anbei das gepackte Programm, am besten so die exe in einem extra Ordner lassen da eine save.ini erstellt wird.
|
Schon schlecht. Sollte ein Administrator das Programm für die anderen Bneutzer installieren, haben diese dort keine Schreinrechte. Desweiteren überschreiben sich so die Benutzer ihre Einstellungen gegenseitig. Auch ich, als einzigster Benutzer könnte es nicht benutzen, da ich es dort installieren würde, wo es hingehört, nämlich in den Programmordner, da ich aber nur als Bneutzer unter Windows arbeite habe ich dort keine Schreibrechte und könnte es so also nicht benutzen.
demo88 - Mo 05.09.05 13:26
Aber wie sollte man die Einstellungen denn sonst speichern? Wenn man keine Schreibrechte auf dem laufwerk hat, hat man meisstens auch keine für die Registry. Und wenn du keine Schribrechte unter dem Programmordner hast, wie funktionieren denn überhaupt Programme bei dir. Fast jedes Programm schreibt seine Optionen in eine Datei...
Udontknow - Mo 05.09.05 13:51
Hi!
Viele Programme schreiben heutzutage ihre Informationen in einen Unterordner von "Anwendungsdaten" bzw. "Application data". Dieser Ordner ist direkt unter jedem Profil vorhanden. Mir fällt jetzt gerade nur nicht ein, wie die Funktion hiess, mit der man den Pfad sofort bekommt...
Cu,
Udontknow
s-off - Mo 05.09.05 14:24
huhu,
Udontknow hat folgendes geschrieben: |
Viele Programme schreiben heutzutage ihre Informationen in einen Unterordner von "Anwendungsdaten" bzw. "Application data". |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| uses ActiveX, ShlObj;
function TForm1.GiveMeThePath(iFolder: Integer): string; var Allocator: IMalloc; SpecialDir: PItemIdList; FBuf: array[0..MAX_PATH] of Char; begin Result := ''; if SHGetMalloc(Allocator) = NOERROR then begin SHGetSpecialFolderLocation(Form1.Handle, iFolder, SpecialDir); SHGetPathFromIDList(SpecialDir, @FBuf[0]); Allocator.Free(SpecialDir); Result := string(FBuf); end; end; |
aufruf dann per
Delphi-Quelltext
1: 2: 3: 4:
| procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(GiveMeThePath(CSIDL_APPDATA)); end; |
werte für iFolder sind:
CSIDL_DESKTOP
CSIDL_INTERNET
CSIDL_PROGRAMS
CSIDL_CONTROLS
CSIDL_PRINTERS
CSIDL_PERSONAL
CSIDL_FAVORITES
CSIDL_STARTUP
CSIDL_RECENT
CSIDL_SENDTO
CSIDL_BITBUCKET
CSIDL_STARTMENU
CSIDL_DESKTOPDIRECTORY
CSIDL_DRIVES
CSIDL_NETWORK
CSIDL_NETHOOD
CSIDL_FONTS
CSIDL_TEMPLATES
CSIDL_COMMON_STARTMENU
CSIDL_COMMON_PROGRAMS
CSIDL_COMMON_STARTUP
CSIDL_COMMON_DESKTOPDIRECTORY
CSIDL_APPDATA
CSIDL_PRINTHOOD
CSIDL_ALTSTARTUP
CSIDL_COMMON_ALTSTARTUP
CSIDL_COMMON_FAVORITES
CSIDL_INTERNET_CACHE
CSIDL_COOKIES
CSIDL_HISTORY
Moderiert von
Tino: Code- durch Delphi-Tags ersetzt.
Delete - Mo 05.09.05 14:37
demo88 hat folgendes geschrieben: |
| Aber wie sollte man die Einstellungen denn sonst speichern? Wenn man keine Schreibrechte auf dem laufwerk hat, hat man meisstens auch keine für die Registry. Und wenn du keine Schribrechte unter dem Programmordner hast, wie funktionieren denn überhaupt Programme bei dir. Fast jedes Programm schreibt seine Optionen in eine Datei... |
Falsch. In seinem Profilordner hat man Schreibrechte und in den HKCU Zweig der Registry auch.
Smile - Mo 05.09.05 16:33
Ich Danke euch für eure Antworten!!
demo88 hat folgendes geschrieben: |
-Mir gefält der Aufbau des Programms nicht so gut (Ein bisschen unübersichtlich)
|
Hmm, habe mich doch schon zurück gehalten, oben Anzahl einstellen und mittig die Verzeichnisse, bin immer für Vorschläge offen! ;)
Gut ich werd es noch beschriften, "Anzahlquellen einstellen" und "Pfad:" oder sowas in der Richtung.
demo88 hat folgendes geschrieben: |
-Du könntest vielleicht vor dem Kopieren eine Abfrage einbauen was mit schon existierenden Dateien passieren soll (Überschreiben, ignorieren, etc...)
|
Hast du es mal probiert? Es kommen Hinweise da es ja die Windows Kopierfunktion nutzt!
Luckie hat folgendes geschrieben: |
Schon schlecht. Sollte ein Administrator das Programm für die anderen Bneutzer installieren, haben diese dort keine Schreinrechte. Desweiteren überschreiben sich so die Benutzer ihre Einstellungen gegenseitig. Auch ich, als einzigster Benutzer könnte es nicht benutzen, da ich es dort installieren würde, wo es hingehört, nämlich in den Programmordner, da ich aber nur als Bneutzer unter Windows arbeite habe ich dort keine Schreibrechte und könnte es so also nicht benutzen.
|
Naja wenn du keine Schreibrechte hast dann brauchst du auch kein Kopierprogramm. ;)
Hehe
Ich weiss kann ja sein das man nur auf dem Laufwerk keine hat aber ich wollte das Programm einfach halten und es nicht auf der ganzen Festplatte verstreuen! 8)
Werd mal schauen ob ich das noch so löse. Danke für den Hinweis
PS: Was ich noch einfüge ist eine Checkbox so das das Programm automatisch beendet wenn das Kopieren fertig ist, falls gewünscht.
demo88 - Mo 05.09.05 22:22
Smile hat folgendes geschrieben: |
[...]
demo88 hat folgendes geschrieben: |
-Du könntest vielleicht vor dem Kopieren eine Abfrage einbauen was mit schon existierenden Dateien passieren soll (Überschreiben, ignorieren, etc...)
|
Hast du es mal probiert? Es kommen Hinweise da es ja die Windows Kopierfunktion nutzt!
[...]
|
Ich weiss sogar das es in dieser prozedur mit der du das machst; einen Parameter gibt der diese Optionen vorher bestimmt. (Glaub ich jedenafalls :wink: )
Smile - Mo 05.09.05 22:51
demo88 hat folgendes geschrieben: |
Ich weiss sogar das es in dieser prozedur mit der du das machst; einen Parameter gibt der diese Optionen vorher bestimmt. (Glaub ich jedenafalls :wink: ) |
Glaubst du das ja? :D
Also ich finds ganz ok so wie es ist da ja eine Aufforderung beim Überschreiben kommt. :)
demo88 - Di 06.09.05 15:54
*werbung fuer den easy delphi helper macht* ja weiss ich;)
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| uses ShellApi;
function CopyFileEx(const ASource, ADest: String; ARenameCheck: boolean = false): boolean; var sh: TSHFileOpStruct; begin sh.Wnd := Application.Handle; sh.wFunc := FO_COPY;
sh.pFrom := PChar(ASource + #0); sh.pTo := PChar(ADest + #0); sh.fFlags := fof_Silent or fof_MultiDestFiles; if ARenameCheck then sh.fFlags := sh.fFlags or fof_RenameOnCollision; Result:=ShFileOperation(sh)=0; end; |
Smile - Di 06.09.05 17:49
demo88 hat folgendes geschrieben: |
*werbung fuer den easy delphi helper macht* ja weiss ich;)
|
So wirklich weißt du es aber net! ;)
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| function CopyDir(const fromDir, toDir: string): Boolean; var fos: TSHFileOpStruct; begin ZeroMemory(@fos, SizeOf(fos)); with fos do begin wFunc := FO_COPY; fFlags := FOF_FILESONLY; pFrom := PChar(fromDir + #0); pTo := PChar(toDir) end; Result := (0 = ShFileOperation(fos)); end; |
demo88 - Di 06.09.05 19:54
mist :cry:
aber da hast du doch auch "flags"
also kannst du ja vorher auch die einstellungen vornehmen oder den statusbalken nicht anzeigen, etc...
Smile - Di 06.09.05 21:36
demo88 hat folgendes geschrieben: |
| mist :cry: |
:lol:
Tja ist immer so eine Sache mit dem Vorraussehen! ;)
Würde mich noch über Tipps zur Gestaltung freuen. Danke
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!