[Delphi] Trudne pytanie z rozszerzeniem

0

Piszę edytor tekstów i chcę zrobić tak:

  • użytkownik pisze coś w richedit.
  • zapisuję ten plik w formacie wymyślonym przeze mnie (np.: *.qs).
  • plik zostaje zapisany w tym formacie i ma ikonę dokukentu (tak jak word ikona aplikacji jest inna a ikona dokukenu jest inna).
  • podwójne kliknięcie na ten dokument sopwoduje otworzenie go i tekst zostaje wyświetlony w richedit.
    ...na pewno dla was to nie jest zbyt trudne.
0

Też tego teraz szukam... to było na 100% na forum ;)

0

Było. Macie tu kawałek kodu, który kiedyś napisałem na potrzeby swojej aplikacji.

function ModifyReg:boolean;
var reg : TRegistry;

procedure cantcreate;
begin
Result:=False;
Reg.Free;
Exit;
end;

begin
Result:=True;
Reg:=TRegistry.Create;
Reg.RootKey:=HKEY_CLASSES_ROOT;
With Reg do
begin
If Not CreateKey('.arj') then
CantCreate;
OpenKey('.arj',False);
WriteString('','PolArj');
end;
Reg.CloseKey;
If Not Reg.CreateKey('PolArj') then
CantCreate;
Reg.OpenKey('PolArj',False);
Reg.WriteString('','ARJ archive');

If (Not Reg.CreateKey('shell'))or(Not Reg.CreateKey('DefaultIcon')) then
CantCreate;
With Reg do
begin
OpenKey('DefaultIcon',False);
WriteString('',PathToInstall+'\Polarj.exe,0');
CloseKey;
OpenKey('polarj\shell',False);
end;

If Not Reg.CreateKey('open') then
CantCreate;
Reg.OpenKey('open',False);
If Not Reg.CreateKey('command') then
CantCreate;
Reg.OpenKey('command',False);
Reg.WriteString('',PathToInstall+'\polarj.exe "%1"');

Reg.RootKey:=HKEY_LOCAL_MACHINE;
If Not Reg.OpenKey('software\Microsoft\Windows\CurrentVersion\Uninstall',False) then
CantCreate;
If Not Reg.CreateKey('PolArj') then
CantCreate;
Reg.OpenKey('PolArj',False);
Reg.WriteString('DisplayName','PolArj - Nakładka na ARJ');
If PathToInstall[Length(PathToInstall)]'' then
Reg.WriteString('UninstallString',PathToInstall+'\Uninstall.exe -uninstall')
else
Reg.WriteString('UninstallString',PathToInstall+'Uninstall.exe -uninstall');
Reg.Free;
end;//ModifyReg

Część kodu usunąłem bo nie była istotna, część nie jest dla stworzenia skojarzenia potrzebna ale na wzór może posłużyć.

0

W dziale Gotowce masz przyklad jak kojarzyc dane rozszerzenie z programem.

0

Pochwalony!
Przyda Ci się pewnie też otwieranie plików, które mają Twoje rozszerzenie, przy pomocy twojego programu.

function ConnectParams : String;
var
Res: String;
LP: Integer;
begin
for LP := 1 to ParamCount do
begin
Res := Res + ParamStr(LP);
if LP ParamCount then
Res := Res + ' ';
end;
Result := Res;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
Dir: String;
begin
Dir := ConnectParams;
if Dir '' then
RichEdit1.Lines.LoadFromFile(Dir);
end;

:)

0

A po co ta zabawa?? Jak uruchomisz program w ten sposób:

program "c:\Program files\plik ze spacjami .txt"

To ParamStr(1) = 'c:\Program files\plik ze spacjami .txt'

Delphi rozpozna cudzysłowy.

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