Einzelnen Beitrag anzeigen

dopeline

Registriert seit: 7. Mär 2003
Ort: Berlin
304 Beiträge
 
Delphi 7 Enterprise
 
#5
  Alt 16. Mai 2003, 18:22
hier ist die function zum registrieren des programmes:
Delphi-Quellcode:
function InstallExt(Extension, ExtDescription, FileDescription,
                    OpenWith, ParamString: String; IconIndex: Integer): Boolean;
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  try
    with Reg do
     begin
      RootKey := HKEY_CLASSES_ROOT;
      OpenKey(Extension, True);
      WriteString('', ExtDescription);
      OpenKey('\' + ExtDescription, True);
      WriteString('', FileDescription);
      OpenKey('DefaultIcon', True);
      WriteString('', OpenWith + ','+IntToStr(IconIndex));
      OpenKey('\' + ExtDescription + '\Shell\Open\Command', True);
      WriteString('', '"' + OpenWith + '" "' + ParamString + '"');
     end;
   Result := True;
  except
   Result := False;
  end;
  Reg.Free;
end;
Und so rufe ich die funktion auf:InstallExt('.pcm', 'PCM-Datei', 'Personal Contact Manager', Application.ExeName, '%1',0); und
Delphi-Quellcode:
 if ParamCount>0 then
... //der ablauf zum öffnen
hier ist die prozedur zum öffnen:
Delphi-Quellcode:
procedure TFormHaupt.Oeffnen1Click(Sender: TObject);
var
  F: TStringList;
  i: Integer;
  ini : TInifile;
  slKeyNumbers : TStringList;
  KeyNumber : Integer;
begin
  F := TStringList.Create;
  try
    begin
    if OpenDialog1.Execute then
  begin
    ini := TIniFile.Create(ExtractFilePath(ParamStr(0))+'\files.ini');
    try
      slKeyNumbers := TStringList.Create;
      try
        ini.ReadSectionValues('files', slKeyNumbers);
        KeyNumber := slKeyNumbers.Count;
       
        if slKeyNumbers.Count = 4 then
        begin
         ini.DeleteKey('files', '0');
          ini.WriteString('files', '0', OpenDialog1.FileName);
        end
       else
          ini.WriteString('files', IntToStr(KeyNumber), OpenDialog1.FileName);
      finally
        slKeyNumbers.Free;
      end;
    finally
      ini.Free;
    end;
  end;
    begin
    person.datei:=opendialog1.filename;
    if person.datei='then begin end else
    begin
    FormHaupt.Caption:= 'Personal Contact Manager - '+ChangeFileExt(ExtractFileName(opendialog1.FileName),'');
    F.LoadFromFile(OpenDialog1.FileName);
    StringGrid1.RowCount := StrToInt(F[0]);
    StringGrid1.ColCount := StrToInt(F[1]);
    for i := 0 to (StringGrid1.RowCount - 1) do
      StringGrid1.Rows[i].CommaText := F[i + 2];
      end;
    end;
    end;
  finally
    F.Free;
  end;
 begin

end;

end;
aber irgentwie funktioniert das mit dem öffnen noch nicht so ganz...
auch wenn ich das mit dem opendialog wegnehme, sagt er beim versuch das programm über eine datei zu öffnen: "Datei kann nicht geöffnet werden. System kann den angegebenen Pfad nicht finden"

wo steckt da der fehler?

Gruß, dopeline
  Mit Zitat antworten Zitat