| Autor |
Beitrag |
Smile
      
Beiträge: 40
WinXP
D6 Pers
|
Verfasst: Mo 05.09.05 12:21
Hallo DFler,
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  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. 
Einloggen, um Attachments anzusehen!
_________________ Smile or the day is lost! so ->
|
|
demo88
      
Beiträge: 160
Ubuntu 6.04, Win XP
Delphi 7
|
Verfasst: Mo 05.09.05 12:56
Also das Programm funktioniert super. Das ist ja schon mal die Hauptsache
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...)
_________________ "Das ist kein Bug, das ist ein Feature..."
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 05.09.05 12:59
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
      
Beiträge: 160
Ubuntu 6.04, Win XP
Delphi 7
|
Verfasst: 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...
_________________ "Das ist kein Bug, das ist ein Feature..."
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: 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
      
Beiträge: 35
WinXP
D7 Prof
|
Verfasst: 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.
_________________ greetz
s-off
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: 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 
      
Beiträge: 40
WinXP
D6 Pers
|
Verfasst: 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!
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.
_________________ Smile or the day is lost! so ->
|
|
demo88
      
Beiträge: 160
Ubuntu 6.04, Win XP
Delphi 7
|
Verfasst: 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  )
_________________ "Das ist kein Bug, das ist ein Feature..."
|
|
Smile 
      
Beiträge: 40
WinXP
D6 Pers
|
Verfasst: Mo 05.09.05 22:51
_________________ Smile or the day is lost! so ->
|
|
demo88
      
Beiträge: 160
Ubuntu 6.04, Win XP
Delphi 7
|
Verfasst: 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; |
_________________ "Das ist kein Bug, das ist ein Feature..."
|
|
Smile 
      
Beiträge: 40
WinXP
D6 Pers
|
Verfasst: Di 06.09.05 17:49
_________________ Smile or the day is lost! so ->
|
|
demo88
      
Beiträge: 160
Ubuntu 6.04, Win XP
Delphi 7
|
Verfasst: Di 06.09.05 19:54
mist
aber da hast du doch auch "flags"
also kannst du ja vorher auch die einstellungen vornehmen oder den statusbalken nicht anzeigen, etc...
_________________ "Das ist kein Bug, das ist ein Feature..."
|
|
Smile 
      
Beiträge: 40
WinXP
D6 Pers
|
Verfasst: Di 06.09.05 21:36
_________________ Smile or the day is lost! so ->
|
|