Acces Violation przy paramstr

0

Mój problem polega na...

Program przy otwarciu sprawdza czy został otworzony z parametrem ( w celu otworzenia pliku..). Ale na Win98, jeśli tylko w jednym z katalogów będzie spacja, to parametry się rozdzielą.. wieć zrobiłem tak:

 Prm := '';
  if (ParamStr(1) <> '') then
  begin
    i := 1;
    repeat
      if ParamStr(i) <> '' then Prm := Prm + ParamStr(i);
      i := i + 1;
      if ParamStr(i+1) <> '' then Prm := Prm + ' ';
    until ParamStr(i) = '';
   FileOpen(Prm);

FileOpen to jakaś tam procedura otwierająca.

Problem polega na tym, że na Win2k występuje przy tym AV ... - to jak zrobić, .. żeby było dobrze?

0

Może zamiast pętli repeat..until pętla for z użyciem ParamCount.

0

Nie wiem za bardzo, czy o to chodziło, ale możesz przecież parametr dać w "". Czyli np.

program.exe "parametr nr1" "parametr nr2"

0

A spróbuj może jakoś tak:


if ParamCount>0 then
   begin
    plik:='';
    for i:=1 to paramCount do plik:=plik+' '+paramStr(i);
    fileOpen(plik);
   end;

Może nie zabardzo widać.
Najpierw czyszczę zmienną plik, ot tak w razie co
Potem w pętli dodaję do niej TYLKO SPACJĘ, a potem parametr.

0

umieść %1 czy tam parametr ze spacjami w cudzysłowie ""

np. c:\aplikacja "ddd dddd ddd"

parametrem pierwszym bedzie cały ciąg.

1 użytkowników online, w tym zalogowanych: 0, gości: 1