![]() |
Shellexecute Problem mit Copy
Hi.
Also ich wollte 2 Dateien zusammen kopieren. Das hat auch per Konsole mit 'Copy /b' ganz gut geklappt. Problem ist jetzt folgendes. Diese Zeile ist dafür verantwortlich, dass das passiert:
Delphi-Quellcode:
Und nun wirds vollkommen bescheuert:
if ShellExecute(Handle, 'open', 'cmd.exe', pWideChar('/C copy /b 1.txt + 2.txt '+SaveDialog1.FileName), pWideChar(Dir), sw_hide) >= 32 then
ShowMessage(SysErrorMessage(GetLastError)); Wenn ich das ganze im Debugger mache funktionierts manchmal (!). Wenn ich das aber ausserhalb der IDE aufrufe bekomme ich Code 42 zurück, unter GetLastError allerdings ein 'Der Vorgang wurde Erfolgreich ausgeführt'. Was aber praktisch passiert ist, dass ich nur 1.txt an die stelle kopiert bekomme. (Und wirklich nur 1.txt, größe und MD5 bestätigen, dass es nur die eine datei ist). Woran könnte das liegen? |
AW: Shellexecute Problem mit Copy
Relative Pfade sind böse.
Nutze absolute Pfade und es geht. Und warum nicht einfach 2 bis 3 FileStreams, anstatt über diesen uralten DOS-Befehl? PS: ShellExecute und PWideChar ist auch böse :warn: ShellExecute + PChar + String ShellExecuteA + PAnsiChar + AnsiString oder ShellExecuteW + PWideChar + WideString/UnicodeString |
AW: Shellexecute Problem mit Copy
Warum ist Copy ein uralt Befehl? Er gehört immer noch zur Konsole, wie damals zu DOS. Aber auch ich würde FileStreams nutzen oder eine Batch-Datei. Aber das in einem Delphi Programm mit Shellexecute und Copy umsetzen zu wollen ist unsinnig.
|
AW: Shellexecute Problem mit Copy
Ahhh. Dummes Jamah.
Hätte man drauf kommen können... Aber auch mit absoluten pfaden funktionierts nicht. Plan B. Also Datei in nen Stream krieg ich noch hin. Wie krieg ich 2 Streams hintereinander, also in einen? Danke erstmal für eure Hilfe. |
AW: Shellexecute Problem mit Copy
Schau Dir einmal
![]() |
AW: Shellexecute Problem mit Copy
Irgendwie versteh ichs nicht ganz.
Hab beide Files jetzt in nem Stream aber irgendwie krieg ich die nicht in einen. Abgesehen davon versteh ich aber auch ![]() Könnte das jemand genauer erklären oder ein Beispiel posten? Danke |
AW: Shellexecute Problem mit Copy
Versuch es mal so (ungetestet):
Delphi-Quellcode:
In Files sind die Dateien zu übergeben, die Du "zusammenkleben" willst, und DestFileName bezeichnet den Namen der Zieldatei.
procedure Glue(const Files: TStrings;const DestFileName: string);
var i: Integer; src, dest: TFileStream; begin try dest := TFileStream.Create(DestFileName,fmCreate or fmOpenWrite or fmShareExclusive); try for i := 0 to Files.Count - 1 do begin src := TFileStream.Create(Files[i],fmOpenRead or fmShareDenyNone); try dest.CopyFrom(src,0); finally src.Free; end; end; finally dest.Free; end; except on E: Exception do MessageBox(0,PChar(E.Message),nil,MB_OK or MB_ICONERROR); end; end; |
AW: Shellexecute Problem mit Copy
Danke.
Funktioniert! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz