rejestracja rozsze?żenia - wykonanie

0

Witam!

Mój program, korzysta z poniższej procedury na zarejestrowanie rozszerzenia pliku w systemie(z torry).

procedure TMainFrm.RegisterFileType(prefix: string; exepfad: string; ikona : byte);
var
  reg: TRegistry;
begin
  reg := TRegistry.Create;
  try 
    reg.RootKey := HKEY_CLASSES_ROOT;
    //create a new key  --> .cnc
    reg.OpenKey('.' + prefix, True);
    try
      //create a new value for this key --> cncfile
      reg.Writestring('', prefix + 'file');
    finally
      reg.CloseKey;
    end;
    //create a new key --> cncfile
    reg.CreateKey(prefix + 'file');
    //create a new key pcifile\DefaultIcon
    reg.OpenKey(prefix + 'file\DefaultIcon', True);
    //and create a value where the icon is stored --> Sciezka\program.exe,0
    try
      reg.Writestring('', exepfad + ','+inttostr(ikona));
    finally
      reg.CloseKey;
    end;
    reg.OpenKey(prefix + 'file\shell\open\command', True);
    //create value where exefile is stored --> sciezka\program.exe "%1"
    try
      reg.Writestring('', exepfad + ' "%1"');
    finally
      reg.CloseKey;
    end;
  finally
    reg.Free;
  end;
  SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
end;

Po zarejestrowaniu rozszerzenia cnc, mogę teraz uruchamiać pliki wygenerowane przez mój program, po dwukrotnym kliknięciu w eksploratorze Windows. I prawidłowo. Wszystko jest OK, ale mam taki problem. W OnCreate programu mam:

       if (ParamCount > 0) then
          begin
             OtworzPlikCNC(ParamStr(1));
          end;

A w procedurze OtworzPlikCNC mam instrukcję, ktora ma mi odczytać nazwę otwieranego pliku. Nazwa jest pobierana, ale w starym systemie, tj. czytane jest 8 znaków tylko, np: nazwa pliku :Projekt 2(Odczytywanie) jest czytana jako: PROJEK~2(rozszeżenie ucinam).
Dlaczego tak się dzieje?
Używam takiej instrukcji do odczytania tej nazwy:

nazwa:=copy(ExtractFileName(Sciezka),1,(length(ExtractFileName(Sciezka))-4));

zmienna nazwa jest typu string, sciezka tez(podawana jako parametr w procedurze, czyli ParamStr(1).
Pozdr
Pepe

0

w helpie jest opisane jak uzyskać wersje krótka z długiej, jest też i jak uzyskać wersje długą z krótkiej...

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