10. juni 1999 - 10:33Der er
13 kommentarer og 1 løsning
Hjælp I Delphi!!
Jeg er lige begyndt at bruge delphi, så jeg kunne godt tænke mig at vide hvad man skal skrive, hvis man skal åben et program (EXE fil) Håber at der er nogle der kan hjælpe!!!
Det kan ikke lade sig gøre at åbne en .EXE fil. Man kan åbne projekter eller andre filer der indeholder kildekode som man derefter kan kompilere til at være en .EXE fil. Men det er ikke muligt at lave "baglæns kovertering" af allerede kompilerede programmer.
Tak for det. Men kan du også sige mig en anden ting.. Jeg har 3 små programmer, og skal lave en menu, så man kan åbne dem fra menuen! Hvis nu jeg laver en "ListBox" (med de 3 programmer) og en knap (Kør) Hvad skal jeg så skrive så man kan makerer programmet og derefter trykke "Kør" Eller er der en anden måde at gøre det på????? Håber også du kan hjælpe mig med det!!!!!!
Hvis du lagrer stien i listeboksen kan koden se således ud :
procedure TForm1.FormShow(Sender: TObject); begin ListBox1.Add('c:\test.exe'); ListBox1.Add('c:\test1.exe'); ListBox1.Add('c:\test2.exe'); ListBox1.Add('c:\test3.exe'); end;
procedure TForm1.Button1Click(Sender: TObject); begin if ListBox1.ItemIndex > -1 then if WinExec(ListBox1.Items[ListBox1.ItemIndex], SW_SHOW) > 0 then ProgrammetFejlede; end;
Hvis du vil bruge et kaldenavn i liset kan du lagre stien til programmet som et objekt i listens Objects metode og hente den derfra.
Ja, OK. Så gik det lidt hurtigt da jeg postede svaret. Her er en mere gennemført udgave. Denne gang har jeg afprøvet det :-P
procedure TForm1.FormShow(Sender: TObject); begin ListBox1.Items.Add('c:\winnt\notepad.exe'); ListBox1.Items.Add('c:\winnt\regedit.exe'); ListBox1.Items.Add('c:\winnt\telnet.exe'); end;
procedure TForm1.Button1Click(Sender: TObject); var i : integer;
begin if ListBox1.ItemIndex > -1 then begin i := WinExec(PChar(ListBox1.Items[ListBox1.ItemIndex]), SW_SHOW); if i < 33 then ShowMessage(Format('Programstarten fejlede med kode : %d', [i])); end; end;
Det virker heller ikke!!!! jeg ved ikke om der er fordi vi ikke har den samme version af programmet, jeg har Delphi 3 og 4. men hvis du har prøvet det skulle det virke!!! Så vis du gider at sende det til mig vil jeg blive MEGET glad, så kan jeg se om det er mig der har lavet en fejl!!! min e-amil adresser:
koder@get2net.dk
Men ellers Mange tak for hjælpen ind til vidre!!!!!!!!!!!!!
Det var bare mig der havde skrevet det forkert, men nu virker det!!!!! Jeg har lige et par spørgsmål til: Kan man ikke give programmet i menuen et navn i stedet for ”C:\………” Og hvis nu det skal på en cd-rom kan man ikke skrive noget andet end ”d:\……” for det er ikke alle altid et cd-rom drev har bogstavet d:
procedure TForm1.Button1Click(Sender: TObject); var i : integer;
begin if ListBox1.ItemIndex > -1 then begin i := WinExec(PChar((ListBox1.Items.Objects[ListBox1.ItemIndex] as TStringObject).Value), SW_SHOW); if i < 33 then ShowMessage(Format('Programstarten fejlede med kode : %d', [i])); end; end;
procedure TForm1.FormDestroy(Sender: TObject); var i : integer;
begin for i := 0 to ListBox1.Items.Count - 1 do ListBox1.Items.Objects[i].Free; end;
end.
Med hensyn til CD-ROM drev der kan skifte drevnavn begynder vi at have en hel anden affære... Der skal du nok finde ud af CD'ens drevbogstav først, og så bruge det. Lad evt. brugeren specificere det, eller gennemløb drevene med de to Win32 kald : GetLogicalDriveStrings, for at få alle drev, og GetDriveType for at få drevets type.
Det er ganske vist. Den bruger jeg dog mest til at starte programmer der bruger en fil. Man kan jo bede den om at 'eksekvere' en tekstfil, og man vil så få åbnet det program der er associeret til tekstfilen i windows.
Hvis man ved det er en EXE man startder er der dog mindre overhead ved at bruge WinExec (eller CreateProcess) end der er ved ShellExecute.
Kan man også lave noget så hvis man markere et af programmerne på listen, så er der et billedet af programmet, og der står hvad det fylder, hvad det er for et program????
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.