Avatar billede bilaldk Nybegynder
18. marts 2001 - 11:07 Der er 11 kommentarer og
1 løsning

Filen mangler når.....

Hi, jeg sidder her og har et lille problem.
Jeg har lige lave et lille program, som skal kunne starte et andet program som jeg har downloaded, men hvis ikke alle filerne ligger i den folder på det samme sted så virker programmet ikke. den kan ikke finde .exe filen.

for eksempel kunne det være at jeg ville flytte alle mine filer fra en mappe til en anden.

Mange tak håber i forstod mit problem:)
Avatar billede kaspikov Nybegynder
18. marts 2001 - 11:12 #1
Kan du ikke gøre dit problem lidt tydeligere, måske noget kode eller noget??

F.eks din den kode du bruger når du starter det andet program.

/Kaspikov
Avatar billede bilaldk Nybegynder
18. marts 2001 - 11:19 #2
ok.

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShellExecute(Handle,\'open\',PChar(\'notepad.exe\'),pchar(\'\'),pchar(\'\'),SW_SHOWNORMAL);
end;
der er koden jeg bruger....kender du en anden?
Avatar billede compilos Nybegynder
18. marts 2001 - 11:23 #3
Er der ikke noget med funktion der hedder Exctractfilepathname - eller noget lignende. Den finder så ud af hvor dinne ´ting´ ligger. Bare et gæt.
Avatar billede kaspikov Nybegynder
18. marts 2001 - 11:31 #4
Jeg forstår ikke dit spørgsmål helt, men.

Skal du eksekvere alle filer i en mappe, eller bare en fil?

/Kaspikov
Avatar billede bilaldk Nybegynder
18. marts 2001 - 11:36 #5
okay nu forklare jeg...
jeg har en masse filer jeg vil have skal følge med mit program..det er filer der skal kunne køres når der bliver klikket på en knap.

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShellExecute(Handle,\'open\',PChar(\'notepad.exe\'),pchar(\'\'),pchar(\'\'),SW_SHOWNORMAL);
end;

filerne er filer som ikke andre normalt har derfor følger de med mit program. Problemet er at jeg havde folderen med alle filerne på skrivebordet, men da programmet skal installeres på drev c:/ så går det galdt. Den leder nemlig efter filerne på skrivebordet.

hjalp det?
Avatar billede bilaldk Nybegynder
18. marts 2001 - 11:36 #6
hvis ikke så hvis mig hvilken linie du bruger så kan jeg teste den:)
Avatar billede kaspikov Nybegynder
18. marts 2001 - 11:50 #7
Problemet er at sandsynligvis har \'hardcoded\' stien til de filer der skal eksekveres hvis du skriver:

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShellExecute(Handle,\'open\',PChar(\'C:\\windows\\skrivebord\\fil.jpg\'),pchar(\'\'),pchar(\'\'),SW_SHOWNORMAL);
end;

så er det dér det går galt, hvis du istedet laver en procedure som denne her, burde der ikke være nogle problemer:

procedure TForm1.Eksekver(Filnavn: string);
begin
  ShellExecute(handle, \'open\', pchar(Filnavn), nil, nil, SW_SHOWNORMAL);
end;

Du kan så lave en Listbox med alle dine filnavne(Både sti og filnavn) i, sætte dem ind i et loop.

procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
begin
  for i := 0 to Pred(ListBox.Items.Count) do
  Eksekver(ListBox.Items.Strings[i]);
end;

/Casper
Avatar billede bilaldk Nybegynder
18. marts 2001 - 11:54 #8
jeg burde have set det:) det er ligesom når man liker på sin hjemmeside:)

tusind tak...jeg har givet dig point nu ikke?
Avatar billede kaspikov Nybegynder
18. marts 2001 - 11:55 #9
Selvtak, tak for pointene og fortsat god programmering :)

/Casper
Avatar billede martinlind Nybegynder
18. marts 2001 - 12:23 #10
er dette ikke nemere :

for i := 0 to ListBox.Items.Count-1 do

istedet for :

for i := 0 to Pred(ListBox.Items.Count) do
Avatar billede bilaldk Nybegynder
18. marts 2001 - 12:29 #11
den gemmer jeg for en sikkerhedskyld...tak
Avatar billede kaspikov Nybegynder
18. marts 2001 - 12:30 #12
Det er det samme, men nogle kan li det ene, andre det andet.

Den ene er ikke næmmere end den anden når man forstår Pred functionen

Pred tager tallets \'predecessor\' altså dens forgænger, derfor det samme.

Det kan da også være nemmere at se hvis man har 3 ting der skal ligges sammen og så trække en fra:

for i := 0 to a +ListBox.Items.Count +ListBox2.Items.Count -1 do

så kan man gøre således:

for i := 0 to Pred(a +ListBox.Items.Count +ListBox2.Items.Count) do

For mig virker det mere overskueligt...

/Casper :)
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