mojprog.exe %1 - problem

0

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.

0

w rejestrze "%*"
w programie

for i := 1 to paramcount do s := s + ' ' +paramstr(i);
0

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)

0

Zdziwiłbym się, gdyby nie było mozna.

0

Co za różnica, czy podasz ścieżkę 8.3 czy LFN???

0

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;
0

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'

0

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

0

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.

0

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...

0

A ExtractLongFileName? AFAIR coś takiego jest...

0

Jestem głupi i nie wiem o co chodzi, albo nie ma czegoś takiego...

0

To jest taka procedura, co wyciaga ze sciezki 8.3 dluga sciezke do pliku...

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