problem z parametrem

0

Otóż chcĘ aby mój prog otwierał pliki, gdy ktoś na nie kliknie dwukrotnie. No to wiadomo jak sie robi - i tak zrobiłem. Pod XP wszystko działa, ale na 98, gdy katalog zawiera "spacje", to nie chce otworzyć. Pomożcie@!

0

ścieżkę ujmij w cudzysłów.

0

Ale jak??? Ja mam takie coś:

if (ParamStr(1)<>'') then begin
... i tu polecenie gdy jest parametr

end else
... i tu polecenie gdy parametru nie ma.

I jak tu wstawić cudzysłów???

0

też miałem taki problem i rozwiązałem w taki sposób:

var
i : integer;
Sciezka : String;
begin
for i:=1 to 100 do
begin
while (ParamStr(i) <> '') do
Sciezka := Sciezka + ParamStr(i) + ' ';
end;
OpenFile(Sciezka);
end;

i to umieściłem w FormShow i działało.
życze powodzenia

0

hmm dziwne - myslalem ze parametr(1) to nazwa pliku z całą tą ścieżką - a patrząc na w/w kod domyslam się , że to tylko jedna literka. Jak to jest>?

0

Jeżeli program uruchamia się poleceniem:

program %1
to zmień na
program "%1"

0

Czyli rozumiem, że wystarczy wziąć jakąś zmienną typu string i przypisać jej wartość warametru a potem spytać czy wartość ZMIENNEJ (nie parametru) jest '' czy tez nie - czy tak??

0

chyba coś nie rozumiesz. ja spróbuję powiedzieć taK: jak masz katalog ze spacją to tedy program myśli, że są to dwa parametry np.

mójprogram.exe c:\Program Files\Borland\test.txt (tak się otwiera plik) program uważa, że parametr (1) to c:\Program, bo istnieje spacja. dlatego też musisz uruchamiać program poprzez

mójprogram.exe "c:\Program Files\Borland\test.txt". żeby prawidłowo odczytał parametr. mój delphi na win98 coś takiego miał, teraz na winme działa bez problemów.

i dlatego też musisz wziąć dwa następujące po sobie parametry, i wtedy połączyć je w jedną ścieżkę sposobem Anonima. wtedy będzie działać

0

A nie lepiej dać po prostu w rejestrze ścieżkę w " "? :)

0

A nie lepiej dać po prostu w rejestrze ścieżkę w " "? :)

Przecież to napisałem :)

0

var
i : integer;
Sciezka : String;
begin
for i:=1 to 100 do
begin
while (ParamStr(i) '') do
Sciezka := Sciezka + ParamStr(i) + ' ';
end;
OpenFile(Sciezka);
end;

No to dałem takie coś i wcale sie nie otwiera - zawiesza sie (nie odpowiada)
???

0

hmmm

"C:\Mój strasznie fajny katalog" ??

if (paramstr(1)[1]='"')and
(paramstr(1)[length(paramstr(1))]='"') then
param:=copy(paramstr(1),2,length(paramstr(1))-1)

może tak;)

0

A w jaki sposób przyporządkowałeś aplikację typowi plików? To może wiele wyjaśnić.

0

popełniłem tam błąd. będzie tak:

var
i:integer;
sciezka:string;
begin
i:=1;
while (paramstr(i) "<>" '') do
begin
sciezka := sciezka + paramstr(i) + ' ';
i:=i+1;
end;
end;

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