Autor Beitrag
cadillecourt
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mo 30.05.05 10:49 
Hi,

gibt es irgend eine Möglichkeit mit Delphi Befehle auszuführen, die normalerweise der MS-DOS-Eingabeaufforderung überlassen sind. Zum Beispiel:
ausblenden Quelltext
1:
copy C:\*.*   D:\					

Ich habe nämlich vor so eine Art Dateimanager zu programmieren. Ich wäre sehr dankbar für schnelle Hilfe.

Mfg
CadilleCourt

Moderiert von user profile iconChristian S.: Topic aus VCL (Visual Component Library) verschoben am Mo 30.05.2005 um 10:49
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Mo 30.05.05 10:54 
Nimm doch leiber die Windows-API. Da hast du evtl. mehr Möglichkeiten um einen Dateienmanager zu proggen.

Wegen der Eingabe Aufforderung. Versuche doch das was du machen willst als Parameter in die Eingabeaufforderung zu übergeben. Es gibt aber bestimmt bessere Varianten (kann sie dir allerdings nicht auf Anhieb sagen).
manfred07
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 56



BeitragVerfasst: Mo 30.05.05 11:41 
Hi cadillecourt,

versuche es mal so.......
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var
Pro: String;

begin  
Pro:='copy C:\*.* D:\';
WinExec(PChar(Pro), SW_RESTORE);

Gruß Manfred

Moderiert von user profile iconTino: Delphi-Tags hinzugefügt.
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Mo 30.05.05 12:53 
@Manfred: WinExec ist veraltet und sollte nicht mehr verwendet werden. Deshalb sollte man am besten ShellExecute verwenden.
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Mo 30.05.05 12:54 
OH, das wird nix, weil "copy" kein Programm, sondern ein Befehl des CMD.EXE ist.
Wenn Du Kommandos von CMD.EXE ausführen willst, dann musst Du CMD.EXE starten. Gottseidank kann man CMD auch mit ein paar Parametern starten. gib mal "CMD /?" in der Eingabeaufforderung ein.

Es sollte dann so gehen ('CMD.EXE /C copy c:\*.* D:\')

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var
Pro: String;

begin
Pro:='CMD.EXE /C copy c:\*.* D:\';
WinExec(PChar(Pro), SW_HIDE);

Allerdings solltest Du vielleicht doch mit FindFirst / FindNext / FindClose einen eigenen rekursiven Kopierer schreiben. Dem kannst du dann noch eine vernünftige GUI mit Fortschrittsbalken, Anzahl der dateien etc. verpassen.
deccer
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 57



BeitragVerfasst: Mo 30.05.05 13:32 
hehe
WinExec() ist "alt" und sollte nicht mehr verwendet werden.
Stattdessen "ShellExecute" aus der Unit ShellApi.


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
uses
  ShellApi;

begin
  ShellExecute(0'open', PChar(sPath + 'programm.exe'), nilnil, SW_SHOWNORMAL);
end;


die beiden "nil" parameter sind einmal
- parameterliste
- verzeichnis in dem das programm ausgeführt werden soll
also dementsprechend setzen wenn mans braucht (und nicht vergessen nen PChar() drumrum zubaun wenn man string variablen und 'blah' mischt)

mitnem strg+linksklick auf SW_SHOWNORMAL kommst in die Windows.pas zu den konstanten die da noch möglich sind, falls du nen anderen "showmodus" haben möchtest

Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt.
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Mo 30.05.05 13:54 
@deccer: Na gut, dann eben so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
uses
  ShellApi;

begin
  ShellExecute(0'open', PChar('CMD.EXE'), PChar('/C Copy c:\*.* d:\'), nil, SW_HIDE);
end;

Is aber egal, weil's um den 'Trick' mit CMD.EXE ging.