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@!
ścieżkę ujmij w cudzysłów.
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???
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
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>?
Jeżeli program uruchamia się poleceniem:
program %1
to zmień na
program "%1"
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??
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ć
A nie lepiej dać po prostu w rejestrze ścieżkę w " "? :)
A nie lepiej dać po prostu w rejestrze ścieżkę w " "? :)
Przecież to napisałem :)
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)
???
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;)
A w jaki sposób przyporządkowałeś aplikację typowi plików? To może wiele wyjaśnić.
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;