Avatar billede ncp Nybegynder
19. maj 2002 - 14:56 Der er 17 kommentarer og
3 løsninger

Kør program

Hey, jeg har en string som f.eks indeholder:

\cs14\csv14full.exe

mit program skal køres fra en cd, og ide'en er så at den skal køre

d:\cs14\csv14full.exe

hvis d: er navnet på det drev, cd'en sidder i...

altså hvordan kører jeg denne string:

\cs14\csv14full.exe

???
Avatar billede ncp Nybegynder
19. maj 2002 - 14:58 #1
det då ud som exp fjernede alle mine backslags... laver erfor stjerne istedet:

*cs14*csv14full.exe

d:*cs14*csv14full.exe

*cs14*csv14full.exe
Avatar billede ncp Nybegynder
19. maj 2002 - 15:00 #2
ps: den skal køre filen som windows ville kører den...
Avatar billede spectual Nybegynder
19. maj 2002 - 15:10 #3
shellexecute skulle kunne klare det.
Avatar billede razersedge Nybegynder
19. maj 2002 - 15:15 #4
Shellexecute(0, 'open', PChar('d:*cs14*csv14full.exe'),PChar(parametre), PChar('d:*cs14*'), 5);

parametre = hvis det feks var hl.exe så ville du måske starte filen med "hl.exe -console -game cstrike"... "-console -game cstrike" er parametrene

skal ingen parametre sende med så erstat PChar(parametre) med nil
Avatar billede spectual Nybegynder
19. maj 2002 - 15:18 #5
F.eks.:

shellexecute (0,
            'open',
            'c:\windows\system32\calc.exe',
            NIL,
            'c:\windows\system32',
            SW_NORMAL);

for at kunne bruge shellexecute skal du tilføje "shellapi" i dine "uses".
Avatar billede spectual Nybegynder
19. maj 2002 - 15:20 #6
SW_NORMAL - starter programmet med dens naturlige windows størrelse
SW_SHOWMINIMIZED - starter programmet minimeret
SW_SHOWMAXIMIZED - starter programmet maksimeret
Avatar billede ncp Nybegynder
19. maj 2002 - 16:44 #7
men jeg kan jeg har kun stringen *cs14*csv14full.exe og kan derfor ikke bare skrive d*cs14*csv14full.exe...
Avatar billede d34c0n Praktikant
19. maj 2002 - 20:57 #8
Og husk!
Hvis man vil bruge Shellexecute skal der tilføjes ShellAPI til uses ;)
Avatar billede cpjg Nybegynder
19. maj 2002 - 21:24 #9
Du kan meget nemt gøre det:
Winexec('d:\cs14csv14full.exe',1);
Avatar billede cpjg Nybegynder
19. maj 2002 - 21:25 #10
jeg fatter simpelthen ikke at folk bruger ShellExecute....
Winexec('',1); er da den langt nemmeste og hurtigste løsning.
Avatar billede spectual Nybegynder
19. maj 2002 - 21:35 #11
så vidt jeg har forstået, svarer shellexecute til "kør", som er det spørgsmålet gik ud på.
Avatar billede ncp Nybegynder
20. maj 2002 - 01:27 #12
spectual > du har ret, det er nok mig, er ikke den bedste til at formulere mit problem... men winexec kører den filen, som windows wille kører det ? (det ville nemlig være bedst...)

og så mangler jeg stadig lige at få at vide hvordan jeg så finder ud af hvilket drev programmet gører fra...
Avatar billede ncp Nybegynder
20. maj 2002 - 01:28 #13
cpjg > hvad gør 1-taller - er bare nysgerig...
Avatar billede ncp Nybegynder
20. maj 2002 - 01:49 #14
har fundet ud af kommandoen:

ExtractFileDrive(const FileName: string): string;

giver drevet, men det er i string, hvordan får jeg det til det her PChar ?
Avatar billede spectual Nybegynder
20. maj 2002 - 05:23 #15
cpjg > hvad gør 1-taller - er bare nysgerig... >> det, som cpjg har gjort er, at han har oversat konstanten SW_NORMAL til 1, hvilket i praksis også ville virke fint, men betragtes af mange som dårlig programmering eller LAME, fordi koden bliver meget sværre at læse og fordi det kun medfører dårlige ting - man vinder intet ved det.
Avatar billede spectual Nybegynder
20. maj 2002 - 05:25 #16
hvis du læser dokumentationen til winexec, vil du kunne se, at 2. parameter er nCmdShow - gyldige værdier her er SW_NORMAL, SW_SHOWMINIMIZED, SW_SHOWMAXIMIZED.
Avatar billede spectual Nybegynder
20. maj 2002 - 05:33 #17
der er flere måder at få en streng til en pchar.

Een måde er, at du kan typecaste den - dvs. du fortæller compileren i delphi, at du _ved_ at den variabel kan gå som en anden type - compileren tager så dit ord for givet. Tilgengæld vil programmet også crashe i værste tilfælde hvis det ikke passer.

Du typecaster en string til at være en pchar med "Pchar (s : string)".

Den anden måde, kan du se ud fra følgende kode:

var
pchar_streng : array [0..255] of char;
streng : string;
begin;
streng := 'kopier mig over i pchar_streng';
strcopy ( pchar_streng, pchar (streng) );
end;

Der er også en måde, der er endnu bedre, men den kan jeg ikke lige huske.
Avatar billede spectual Nybegynder
20. maj 2002 - 05:34 #18
mao.

pchar_streng = Pchar ( ExtractFileDrive ( application.exename );
Avatar billede ncp Nybegynder
28. maj 2002 - 21:28 #19
danke, fik sq noget bakset sammen...
Avatar billede d34c0n Praktikant
09. juni 2002 - 23:24 #20
jeg fandt selv ud af det, men i skal have tak :D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester