AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit ShellExecute...

Ein Thema von Flodding · begonnen am 29. Mär 2009 · letzter Beitrag vom 29. Mär 2009
Antwort Antwort
Flodding

Registriert seit: 26. Dez 2007
Ort: Kiel
121 Beiträge
 
Turbo Delphi für Win32
 
#1

Problem mit ShellExecute...

  Alt 29. Mär 2009, 09:23
Guten Morgen zusammen...

ich habe folgendes Problem:

Delphi-Quellcode:
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 zum Erstellen einers BackUps funktioniert nicht und ich versteh einfach nicht warum...

dieser code hingegen:

Delphi-Quellcode:
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;
funktioniert einwandfrei...

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
Flo
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Problem mit ShellExecute...

  Alt 29. Mär 2009, 09:31
Hallo,

jupp die Leerzeichen fehlen:

ShellExecute(Handle, nil, PAnsiChar('.\system\7zip\7za.exe'), PAnsiChar('a') + ' ' + zipfile + ' ' + targetdir, nil, SW_SHOW); Grüße
  Mit Zitat antworten Zitat
Flodding

Registriert seit: 26. Dez 2007
Ort: Kiel
121 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Problem mit ShellExecute...

  Alt 29. Mär 2009, 09:35
das hat so nicht funktioniert... wegen string und PAnsiChar... habs dann mal so probiert...

ShellExecute(Handle, nil, PAnsiChar('.\system\7zip\7za.exe'), PAnsiChar('a') + PAnsiChar(' ') + zipfile + PAnsiChar(' ') + targetdir, nil, SW_SHOW); was wieder die sache mit dem operantentyp mit sich zieht
Flo
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Problem mit ShellExecute...

  Alt 29. Mär 2009, 09:37
Hallo,

du kannst es auch so lösen, denke ich:

Delphi-Quellcode:
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;
Ist aber ungetestet.

Grüße, Matze
  Mit Zitat antworten Zitat
Flodding

Registriert seit: 26. Dez 2007
Ort: Kiel
121 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Problem mit ShellExecute...

  Alt 29. Mär 2009, 09:41
Delphi-Quellcode:
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;
So funktionierts...

Neues Problem welches ich vorher nicht bemerkt habe...

Delphi-Quellcode:
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;
Hiermit führt er zwar die 7za.exe aus aber er erstellt keine rar-Datei...

EDIT:::

Lag daran dass ich PAnsiChar nutzte...

mit PChar gehts

EDIT::::::

UPS doch nicht... zu früh gefreut -.-*
Flo
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Problem mit ShellExecute...

  Alt 29. Mär 2009, 09:52
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
  Mit Zitat antworten Zitat
Flodding

Registriert seit: 26. Dez 2007
Ort: Kiel
121 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Problem mit ShellExecute...

  Alt 29. Mär 2009, 09:57
7za.exe ist ein kommandozeilenprogramm... ist sone Standalone version ich kannse ja mal anhängen...
Angehängte Dateien
Dateityp: exe 7za_109.exe (231,5 KB, 5x aufgerufen)
Flo
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Problem mit ShellExecute...

  Alt 29. Mär 2009, 10:06
Hi,

ich vermute der Rückgabewert von ShellExecute ist <= 32:

Zitat:
If the function succeeds, it returns a value greater than 32.
Quelle: MSDN

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:
7-Zip (A) 4.65 Copyright (c) 1999-2009 Igor Pavlov 2009-02-03

Error: C:\Dokumente und Einstellungen\Eingeschraenkt\Desktop\test.rar is not
supported archive

System error:
Unzulässige Funktion.
Wobei ich das auch bei der "7z.exe" erhalte. Keine Ahnung, was da los ist, denn die Parameter müssten stimmen.
Vielleicht wirst du daraus schlauer.

Grüße
  Mit Zitat antworten Zitat
Flodding

Registriert seit: 26. Dez 2007
Ort: Kiel
121 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Problem mit ShellExecute...

  Alt 29. Mär 2009, 10:12
hab die lösung gefunden... wäre ich NIEMALS drauf gekommen... eigentlich supersimpel, aber das ist es ja meistens

also hier gefunden:

KLICK

und hier der funktionierende Code:

Delphi-Quellcode:
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;
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... ("')
Flo
  Mit Zitat antworten Zitat
Flodding

Registriert seit: 26. Dez 2007
Ort: Kiel
121 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Problem mit ShellExecute...

  Alt 29. Mär 2009, 11:19
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

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...
Flo
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz