Autor Beitrag
Smile
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 40

WinXP
D6 Pers
BeitragVerfasst: Mo 05.09.05 12:21 
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)
Einloggen, um Attachments anzusehen!
_________________
Smile or the day is lost! so -> :)
demo88
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 160

Ubuntu 6.04, Win XP
Delphi 7
BeitragVerfasst: 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...)

_________________
"Das ist kein Bug, das ist ein Feature..."
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 05.09.05 12:59 
user profile iconSmile 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 160

Ubuntu 6.04, Win XP
Delphi 7
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 35

WinXP
D7 Prof
BeitragVerfasst: Mo 05.09.05 14:24 
huhu,

user profile iconUdontknow hat folgendes geschrieben:

Viele Programme schreiben heutzutage ihre Informationen in einen Unterordner von "Anwendungsdaten" bzw. "Application data".


ausblenden 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

ausblenden 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 user profile iconTino: Code- durch Delphi-Tags ersetzt.

_________________
greetz
s-off
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 05.09.05 14:37 
user profile icondemo88 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 40

WinXP
D6 Pers
BeitragVerfasst: Mo 05.09.05 16:33 
Ich Danke euch für eure Antworten!!

user profile icondemo88 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.

user profile icondemo88 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!

user profile iconLuckie 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.

_________________
Smile or the day is lost! so -> :)
demo88
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 160

Ubuntu 6.04, Win XP
Delphi 7
BeitragVerfasst: Mo 05.09.05 22:22 
user profile iconSmile hat folgendes geschrieben:

[...]
user profile icondemo88 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: )

_________________
"Das ist kein Bug, das ist ein Feature..."
Smile Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 40

WinXP
D6 Pers
BeitragVerfasst: Mo 05.09.05 22:51 
user profile icondemo88 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. :)

_________________
Smile or the day is lost! so -> :)
demo88
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 160

Ubuntu 6.04, Win XP
Delphi 7
BeitragVerfasst: Di 06.09.05 15:54 
*werbung fuer den easy delphi helper macht* ja weiss ich;)

ausblenden 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;

  // String muss mit #0#0 Terminiert werden, um das Listenende zu setzen
  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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 40

WinXP
D6 Pers
BeitragVerfasst: Di 06.09.05 17:49 
user profile icondemo88 hat folgendes geschrieben:
*werbung fuer den easy delphi helper macht* ja weiss ich;)


So wirklich weißt du es aber net! ;)

ausblenden 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;

_________________
Smile or the day is lost! so -> :)
demo88
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 160

Ubuntu 6.04, Win XP
Delphi 7
BeitragVerfasst: 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...

_________________
"Das ist kein Bug, das ist ein Feature..."
Smile Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 40

WinXP
D6 Pers
BeitragVerfasst: Di 06.09.05 21:36 
user profile icondemo88 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

_________________
Smile or the day is lost! so -> :)