![]() |
Problem mit ShellExecute...
Guten Morgen zusammen...
ich habe folgendes Problem:
Delphi-Quellcode:
dieser Code zum Erstellen einers BackUps funktioniert nicht und ich versteh einfach nicht warum...
procedure TfrmMain.btnBackUpClick(Sender: TObject);
var zipfile: PAnsiChar; targetdir: PAnsiChar; begin zipfile:='C:\test.rar'; targetdir:='D:\test\test'; ShellExecute(Handle, nil, PAnsiChar('.\system\7zip\7za.exe'), PAnsiChar('a') + zipfile + targetdir, nil, SW_SHOW); end; dieser code hingegen:
Delphi-Quellcode:
funktioniert einwandfrei...
procedure TfrmMain.btnBackUpClick(Sender: TObject);
begin ShellExecute(Handle, nil, PAnsiChar('.\system\7zip\7za.exe'), 'a C:\test.rar D:\test\test', nil, SW_SHOW); end; sicher ist es nur eine kleinigkeit die ich übersehe, aber ich bekomm meist nur die meldung dass "Operator auf diesen Operantentyp nicht anwendbar ist"... danke schonmal im voraus :) |
Re: Problem mit ShellExecute...
Hallo,
jupp die Leerzeichen fehlen:
Delphi-Quellcode:
Grüße
ShellExecute(Handle, nil, PAnsiChar('.\system\7zip\7za.exe'), PAnsiChar('a') + ' ' + zipfile + ' ' + targetdir, nil, SW_SHOW);
|
Re: Problem mit ShellExecute...
das hat so nicht funktioniert... wegen string und PAnsiChar... habs dann mal so probiert...
Delphi-Quellcode:
was wieder die sache mit dem operantentyp mit sich zieht :(
ShellExecute(Handle, nil, PAnsiChar('.\system\7zip\7za.exe'), PAnsiChar('a') + PAnsiChar(' ') + zipfile + PAnsiChar(' ') + targetdir, nil, SW_SHOW);
|
Re: Problem mit ShellExecute...
Hallo,
du kannst es auch so lösen, denke ich:
Delphi-Quellcode:
Ist aber ungetestet.
procedure TfrmMain.btnBackUpClick(Sender: TObject);
var zipfile: string; targetdir: string; begin zipfile := 'C:\test.rar'; targetdir := 'D:\test\test'; ShellExecute(Handle, nil, PAnsiChar('.\system\7zip\7za.exe'), PAnsiChar('a ' + zipfile + ' ' + targetdir), nil, SW_SHOW); end; Grüße, Matze |
Re: Problem mit ShellExecute...
Delphi-Quellcode:
So funktionierts...
procedure TfrmMain.btnBackUpClick(Sender: TObject);
var zipfile: PAnsiChar; targetdir: PAnsiChar; begin zipfile:='C:\test.rar'; targetdir:='D:\test\test'; ShellExecute(Handle, nil, PAnsiChar('.\system\7zip\7za.exe'), PAnsiChar('a ' + zipfile + ' ' + targetdir), nil, SW_SHOW); end; Neues Problem welches ich vorher nicht bemerkt habe...
Delphi-Quellcode:
Hiermit führt er zwar die 7za.exe aus aber er erstellt keine rar-Datei...
procedure TfrmMain.btnBackUpClick(Sender: TObject);
var zipfile: PAnsiChar; targetdir: PAnsiChar; begin zipfile:='C:\test.rar'; targetdir:='D:\Neuer Ordner\test'; ShellExecute(Handle, nil, PAnsiChar('.\system\7zip\7za.exe'), PAnsiChar('a ' + zipfile + ' ' + targetdir), nil, SW_SHOW); end; EDIT::: Lag daran dass ich PAnsiChar nutzte... mit PChar gehts :) EDIT:::::: UPS doch nicht... zu früh gefreut -.-* |
Re: Problem mit ShellExecute...
Hallo,
geht es denn über die Konsole (cmd)? Die Datei "7za.exe" kenne ich nicht. Bei mir ist es die "7z.exe", mit der es klappen sollte. Ich weiß nicht, ob dir das nun hilft, aber du kannst es ja mal mit der "7z.exe" probieren, falls du die nicht einfach in "7za.exe" umbenannt hast. Grüße, Matze |
Re: Problem mit ShellExecute...
Liste der Anhänge anzeigen (Anzahl: 1)
7za.exe ist ein kommandozeilenprogramm... ist sone Standalone version ich kannse ja mal anhängen...
|
Re: Problem mit ShellExecute...
Hi,
ich vermute der Rückgabewert von ShellExecute ist <= 32: Zitat:
![]() Teste es doch mal manuell in der Windows-Konsole. Da siehst du dann gleich, was dir die "7za.exe" zurückgibt. Bei meinem Test beispielsweise: Zitat:
Vielleicht wirst du daraus schlauer. Grüße |
Re: Problem mit ShellExecute...
hab die lösung gefunden... wäre ich NIEMALS drauf gekommen... eigentlich supersimpel, aber das ist es ja meistens :D
also hier gefunden: ![]() und hier der funktionierende Code:
Delphi-Quellcode:
Leider konnte ich die gänsefüße nicht fett machen, deshalb erwähne ich es extra nochmal... direkt hinter dem oberstrich (') kommen gänsefüße oben ('").. genauso am ende nur umgekehrt... ("')
procedure TfrmMain.btnBackUpClick(Sender: TObject);
var zipfile: PAnsiChar; targetdir: PAnsiChar; begin zipfile:='C:\test.rar'; targetdir:='"D:\Neuer Ordner\test"'; ShellExecute(Handle, nil, PAnsiChar('.\system\7zip\7za.exe'), PAnsiChar('a ' + zipfile + ' ' + targetdir), nil, SW_SHOW); end; :D |
Re: Problem mit ShellExecute...
sorry fürs doppelpost aber ich dachte ich frags lieber hier als dass ich wieder n neues thema eröffne... passt auch irgendwie hier rein :P
also im oberen teil wird ja eine exe, bzw. jetzt eine cmd aufgerufen die mir dann das backup erstellt... ich hab mir gedacht dass es vielleicht schöner wäre wenn ich die cmd auf meiner form laufen lasse oder noch schöner in einem memo das ganze ablaufen lasse... ist das irgendwie möglich? BTW... das cmd fenster hat einen festen namen via title erhalten... vielleicht erleichtert es das ja einwenig... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:43 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 by Thomas Breitkreuz