Mój program ma konwertować bmp-->jpeg po wybraniu pozycji "Konwertuj do jpeg-a" z menu pod PPM jak się na plik bmp kliknie. Ogólnie nie ma problemu, wiem co i jak, ale tylko jeśli chodzi o ścieżki, w których nie ma nazw dłuższych niż 8 znaków, spacji itd. bo inaczej w paramstr(1) mam ścieżki "dosowe" (6znaków~1)... Próbowałem już z wartościami mojprog.exe "%1" ale też nie działa...
Używam win2000.
w rejestrze "%*"
w programie
for i := 1 to paramcount do s := s + ' ' +paramstr(i);
Nie działa, zresztą przecież problemu nie ma ze spacjami tylko z tym, że ścieżka jest zmieniana na "dosową" - nazwy dłuższe niż 8 znaków są skracane do 6 i + ~1... :/
A może w drugą stronę - może można otworzyć obrazek znając taką właśnie dosową ścieżkę? (TBitmap)
Zdziwiłbym się, gdyby nie było mozna.
Co za różnica, czy podasz ścieżkę 8.3 czy LFN???
Nie wiem, ale nie działa... :/ Zresztą mogę podać cały kod to obaczycie:
var j:TJpegImage;
b:TBitmap;
r: TRegistry;
s,parametr: String;
begin
r:=TRegistry.Create;
r.RootKey:=HKEY_CLASSES_ROOT;
r.OpenKey('.bmp',false);
s:=r.ReadString('');
r.CloseKey;
r.OpenKey(s+'\shell\konwersja',true);
r.WriteString('','Konwertuj do jpega');
r.OpenKey('command',true);
r.WriteString('',Application.ExeName+' "%1"');
r.CloseKey;
r.Free;
if ParamStr(1)<>'' then begin
b:=TBitmap.Create;
b.LoadFromFile(paramstr(1));
j:=TJpegImage.Create;
j.Assign(b);
j.Compress;
j.SaveToFile(ChangeFileExt(paramstr(1),'.jpg'));
j.Free;
b.Free;
end;
end;
w rejestrze "%*"
w programie
for i := 1 to paramcount do s := s + ' ' +paramstr(i);
Co wy macie z tym kretyńskim forem?
Przecież jak uruchomisz program w taki sposób:
prog.exe "ala ma kota" a ali nie
to masz:
paramstr(0): 'prog.exe'
paramstr(1): 'ala ma kota'
paramstr(2): 'a'
paramstr(3): 'ali'
paramstr(4): 'nie'
for jest po to, że jak masz np.
prog.exe C:\Moje obrazki\obrazek.bmp
to wychodzi ci
ParamStr(1)=C:\Moje
ParamStr(2)=obrazki\obrazek.bmp
i w pętli sklejasz to w jedność.
Tylko w moim wypadku będę miał
ParamStr(1)=C:\Mojeob~1\obrazek.bmp
Ale zabawy!... Nie łatwiej dać %1 w cudzysłów? "%1"i spacje włącza do parametru.
// Dopisane
W takim razie sorry. Zwiodły mnie te odpowiedzi o składaniu w pętli paramstr'ów.
Jeeeezu... przecież mi chodzi o to, żebym w parametrze miał pełną ścieżkę, a nie "dosową"... spacje mam w głęboko w poważaniu! Zresztą, z "%1" już próbowałem o czym poinformowałem w pierwszym poście...
A ExtractLongFileName? AFAIR coś takiego jest...
Jestem głupi i nie wiem o co chodzi, albo nie ma czegoś takiego...
To jest taka procedura, co wyciaga ze sciezki 8.3 dluga sciezke do pliku...
To widać jesteś głupi - wybacz, ale szukałem na google jakieś 20s !! [glowa]
http://www.google.pl/search?hl=pl&ie=UTF-8&oe=UTF-8&q=winapi+short+long+file+name&lr=