Hvordan kan jeg få mit program til at load flere filer som er mærkeret?? hvis jeg højre klikker på en fil i windowsxp og vælger "åben med" -> mit program. Så loader den filen uden promblemer. Hvis jeg mærker 3 filer og klikker "åben med" så loader den kun den ene fil !? Hvordan kan jeg få den til at loop igennem alle ParamStr(1)
procedure TForm1.FormCreate(Sender: TObject); begin if ParamCount = 1 then begin if ExtractFileExt(ParamStr(1)) = '.txt' then begin //load filen end; end; end;
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
Jeg kan ikke få det til at virke. ParamCount er altid 1! også når jeg mærkere 4,5 filer og siger åben med.
Param 0 = Program fil navn Param 1 = File man siger åben med til Param 2 = c:\test.exe -huh ?? eller er jeg totalt lost ?
procedure TForm1.FormCreate(Sender: TObject); var cnt: integer; begin if ParamCount > 1 then begin for Cnt := 1 to ParamCount do begin showmessage(ParamStr(Cnt)); end; end; end;
Det her er hvad jeg får med cmdline. program sti + 1 af de filer jeg vælger. "D:\Delphi\test.exe" "C:\Documents and Settings\Smith\Dokumenter\test.txt"
Hvis den bare gad at return sådan her: "D:\Delphi\test.exe" "C:\test.txt" "C:\test2.txt" "C:\test3.txt"
roz hvor ser du AllowMultipleFiles til true hende? kan ikke se den på min form1? opendialog har en er det den du mener ?
Lavede lige en lille test to programmer. En hvor man valgte filer og programmet som blev kaldt med filerne som parameter
I Project1.exe på knappens OnClick skrev jeg følgende:
procedure TForm1.ButtonClick(Sender: TObject); var i : integer; st : string; begin if OpenDialog.Execute then begin // Vis valgte filer i en listboks ListBox.Items.Assign(OpenDialog.Files);
// Byg parameterstreng st := ''; for i := 0 to OpenDialog.Files.Count - 1 do begin st := st + '"' + OpenDialog.Files[i] + '"'; if i < OpenDialog.Files.Count - 1 then st := st + ', '; end;
// Byg parameterstreng st := ''; for i := 1 to OpenDialog.Files.Count - 1 do // Tog også exe-filen med begin st := st + '"' + OpenDialog.Files[i] + '"'; if i < OpenDialog.Files.Count - 1 then st := st + ', '; end;
OK, men det er da ikke dit skrevne spørgsmål, er det? Umiddelbart vil jeg sige at du har fået op til flere gangbare svar på dit spørgmål.
Jeg tror at løsningen på den sidste nød er, at du henter en af de mange "kun-én-instans-af-programmet"-units. Der er ganske velfungerende versioner, bl.a. i "Developers guide to Delphi".
Sådan en unit søger efter kørende instanser af dit program og hvis den finder en så har du et "handle" som du kan sende filerne. Alternativt, hvis den ikke findes blandt de kørende, så starter den en instans (og sender filerne).
Det du linker til er jo så man kun kan have programmet kørende en gang, og hvis man åbner prgrammet mere end en gang så for man en showmessage.
Det er ikke det jeg ville.. ved ikke om det er mig der ikke har forklaret mig selv godt nok?
I windows(explorer) kan man højre klikke på filer og vælge "åben med" og så vælge det program man vil åbne filen med. Den fil man vælger bliver jo gemt i param1, og der bruger jeg den kode jeg har skrevet i starten af tråden. Men hvis jeg nu vælger 5 filer og højre klikker og igennen vælger "åben med" så bliver kun EN af de 5 filer tilføjet fordi det er den der bliver gemt i param1 og de andre 4 bliver vist sprugtet over. Jeg vil gerne have den til at tilføje alle filerne!
Synes godt om
Ny brugerNybegynder
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.