Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi ShellExecute will einfach nicht! (https://www.delphipraxis.net/115034-shellexecute-will-einfach-nicht.html)

chuckySTAR 4. Jun 2008 18:58


ShellExecute will einfach nicht!
 
Hey,
ich bekomme jedesmal einen Error mit dem Coder hier:
Delphi-Quellcode:
if ShellExecute(Application.Handle,
                 'open',
                 PChar('cmd.exe'),
                 PChar('copy /b ' + Edit1.Text + ' + ' + Edit2.Text + ' ' + Edit3.Text),
                 nil, nil, SW_NORMAL) <= 32 then
begin
  ShowMessage('Fehler!');
end;
Unzwar sagt er mir bei der Zeile:
nil, nil, SW_NORMAL) <= 32 then

[Pascal Fehler] Unit1.pas(85): E2010 Inkompatible Typen: 'Integer' und 'Pointer'

weiß nicht mehr weiter ^^
Ich habe soviele Varianten ausprobiert, aber keine klappt so richtig.

DeddyH 4. Jun 2008 19:00

Re: ShellExecute will einfach nicht!
 
Ein nil zuviel?

[edit] Schneller :tongue: [/edit]

Fussball-Robby 4. Jun 2008 19:01

Re: ShellExecute will einfach nicht!
 
Das 2. nil muss weg, ansonsten hast du einen Parameter zu viel :zwinker:

chuckySTAR 4. Jun 2008 19:04

Re: ShellExecute will einfach nicht!
 
ahh danke xD

Edit:
ich habe leider noch ein paar probleme mit dem copy
wie bekomme ich das genau hin?
Im momment habe ich das noch so:
Delphi-Quellcode:
ShellExecute(Application.Handle,
                 'open',
                 PChar('command.com'),
                 PChar('copy /b ' + Edit1.Text + ' + ' + Edit2.Text + ' ' + Edit3.Text),
                 nil, SW_NORMAL);
jedoch will das nicht so richtig ^^

taaktaak 4. Jun 2008 19:52

Re: ShellExecute will einfach nicht!
 
Moin, Moin,

so auf die Schnelle fällt mir auf, dass du als Kommandozeileninterpreter jetzt command.com eingesetzt hast. Das kann, muss aber nicht richtig sein. Bis Windows?? war das command.com, jetzt nennt er sich cmd.exe. Am besten machst du das variabel und fragst das System, wie er sich nennt. Das geht z.B. mit

Delphi-Quellcode:
CmdInterpreter:=GetEnvironmentVariable('comspec');
Anstelle von command.com / cmd.exe fügst du dann "CmdInterpreter" in den Aufruf ein. Schau mal, ob es daran liegt. :hi:

chuckySTAR 4. Jun 2008 20:00

Re: ShellExecute will einfach nicht!
 
jetzt wird die cmd.exe gestaret, jedoch passiert dann nichts mehr ^^

taaktaak 4. Jun 2008 20:11

Re: ShellExecute will einfach nicht!
 
Hmmm, also jetzt wage ich mich mal ganz weit aus dem Fenster. Irgendwie war da noch was mit "/c" - aber war das in diesem Zusammenhang? Versuche's mal mit "cmd.exe /c copy ......." und sei nicht enttäuscht, wenn das jetzt Unsinn ist.

Fussball-Robby 4. Jun 2008 20:13

Re: ShellExecute will einfach nicht!
 
Mach mal ein /K vor die Parameter, so:
Delphi-Quellcode:
ShellExecute(Application.Handle,
                 'open',
                 PChar('command.com'),
                 PChar('/K copy /b ' + Edit1.Text + ' + ' + Edit2.Text + ' ' + Edit3.Text),
                 nil, SW_NORMAL);
Gehts so? Evtl wars auch /C, weiß ich nicht so genau

Die Muhkuh 4. Jun 2008 20:15

Re: ShellExecute will einfach nicht!
 
Kannst Du die Dateien nicht mit Delphi selbst kopieren? (CopyFile, FileStream etc. pp.?)

chuckySTAR 4. Jun 2008 20:20

Re: ShellExecute will einfach nicht!
 
Mit /k sagt er, dass die Datei nicht gefunden wurde und mit /c schließt sich das cmd sofort und es passiert nichts

@Muhkuh
gibt es denn auch die gleichen möglichkeiten wie über die console?
also mit /b und 2 dateien verbinden?

Fussball-Robby 4. Jun 2008 20:21

Re: ShellExecute will einfach nicht!
 
Zitat:

Zitat von chuckySTAR
Mit /k sagt er, dass die Datei nicht gefunden wurde und mit /c schließt sich das cmd sofort und es passiert nichts

Dann existieren die Dateien wohl nicht :wink:

Die Muhkuh 4. Jun 2008 20:22

Re: ShellExecute will einfach nicht!
 
Kannst Du sicherlich mit FileStreams oder klassisch per AssignFile und Konsorten machen :)

chuckySTAR 4. Jun 2008 20:25

Re: ShellExecute will einfach nicht!
 
die dateien wurden aber per OpenDialog ausgewählt

taaktaak 4. Jun 2008 20:25

Re: ShellExecute will einfach nicht!
 
Na, dann prüfe doch zunächst einmal, ob die beiden Dateiangaben überhaupt korrekt sind (das müssen sie ja sein, egal ob du's mit cmd.exe oder mit einem Delphicode machst). Füge doch einfach mal zum Testen an geeigneter Stelle folgendes ein:


Delphi-Quellcode:
if FileExists(Edit1.text) then ShowMessage('datei gefunden')
                          else showmessage('datei nicht gefunden');
(und gleiches für das zweite edit!) - Das solltest du erst einmal klären, bevor wir hier an der falschen Stelle suchen.


// edit: und wieso stehen die pfade dann in einem edit?

Fussball-Robby 4. Jun 2008 20:33

Re: ShellExecute will einfach nicht!
 
Schließ die Pfade mal in Anführungszeichen ein (z.B.: "D:\Bild.jpg"), denn wenn ein Leerzeichen im Pfad ist, wird der Teil danach al neuer Parameter angesehen.

IceTube 4. Jun 2008 20:41

Re: ShellExecute will einfach nicht!
 
Servus!

Ich denke das geht soo...

Delphi-Quellcode:
ShellExecute(Application.Handle,
                 'open',
                 PChar('command.com'),
                 PChar('copy "' + Edit1.Text+'"' +  Edit2.Text+'"'+ ' "' + Edit3.Text+'"'),
                 nil, SW_NORMAL);
lg

Edit:
Wieso eigentlich 3 Edit's ??

Der Befehl geht ja so:
(copy C:\Datei.txt C:\Copy\Datei.txt)

chuckySTAR 4. Jun 2008 20:45

Re: ShellExecute will einfach nicht!
 
es passiert genau das gleich wenn ich das so schreibe:
PChar('/c copy /b C:\Dokumente und Einstellungen\th16rv\Desktop\1.jpg + C:\Dokumente und Einstellungen\th16rv\Eigene Dateien\clip0001.rar C:\Dokumente und Einstellungen\th16rv\Desktop\Output.jpg'),


Edit:
Delphi-Quellcode:
ShellExecute(Application.Handle,
                   'open',
                   PChar('cmd.exe'),
                   PChar('/c copy /b "' + Edit1.Text + '" + "' + Edit2.Text+'" ' + '"' + Edit3.Text+'"'),
                   nil, SW_NORMAL);

Endlich geschafft ^^
es klappt endlich!

Danke an euch alle!

Die Muhkuh 4. Jun 2008 20:49

Re: ShellExecute will einfach nicht!
 
Du solltest das Copy vorneran stellen und nicht den Parameter /c?

IceTube 4. Jun 2008 20:50

Re: ShellExecute will einfach nicht!
 
Zitat:

Zitat von chuckySTAR
PChar('/c copy /b C:\Dokumente und Einstellungen\th16rv\Desktop\1.jpg + C:\Dokumente und Einstellungen\th16rv\Eigene Dateien\clip0001.rar C:\Dokumente und Einstellungen\th16rv\Desktop\Output.jpg')

Ich versteh das nicht, wieso "C:\Dokumente und Einstellungen\th16rv\Desktop\1.jpg + C:\Dokumente und Einstellungen\th16rv\Eigene Dateien\clip0001.rar"

Das bedeutet ja eigentlich "Clip00001.rar" mit "1.jpg" wird kopiert nach "...Output.jpg", oder nicht?

Du kannst ja nur eine Datei zu einem anderen Ort kopieren,aber doch nicht 2 Dateien zu einer Datei!?!

...Oder check ich da was nicht?

himitsu 4. Jun 2008 20:51

Re: ShellExecute will einfach nicht!
 
warum muß es denn unbedingt ShellExecute sein, obwohl man diese Opreration auch sehr leicht selber lösen könnte?

Die Muhkuh 4. Jun 2008 20:52

Re: ShellExecute will einfach nicht!
 
Zitat:

Zitat von IceTube
Du kannst ja nur eine Datei zu einem anderen Ort kopieren,aber doch nicht 2 Dateien zu einer Datei!?!

...Oder check ich da was nicht?

Doch, kannst Du ;)

@ Himitsu: Das frage ich mich auch :gruebel:

IceTube 4. Jun 2008 20:53

Re: ShellExecute will einfach nicht!
 
Zitat:

Zitat von Die Muhkuh
Zitat:

Zitat von IceTube
Du kannst ja nur eine Datei zu einem anderen Ort kopieren,aber doch nicht 2 Dateien zu einer Datei!?!

...Oder check ich da was nicht?

Doch, kannst Du ;)

Aso...na dann :o

chuckySTAR 4. Jun 2008 20:57

Re: ShellExecute will einfach nicht!
 
bild.jpg + archiv.rar ziel.jpg

jetzt hat man ein ganz normales bild, doch wenn du die endung zu .rar änderst und das bild (archiv) entpackst, hast du den inhalt der archiv.rar datei

himitsu 5. Jun 2008 00:07

Re: ShellExecute will einfach nicht!
 
aber wozu wöllte man eine Datei so in einem Bild verstecken?
dazumal dieses ersten nicht wirklich versteckt ist und als Schutz dieht es genauso wenig.

PS: hier gab es vor kurzem mal wieder ein Projekt, wo die Daten direkt in den Pixeln versteckt werden, was praktisch ohne Kenntnis, daß da überhaupt was drin ist, "nicht" entdeckt werden kann.

PSS: hast du 'ne Antword auf Beitrag #20?
und wozu soll dieses denn gut sein, bzw. was willst du erreichen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:04 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