![]() |
Öffnen mit...
Hi,
Ich progge gerade einen Rich-Text Editor. Aber wenn ich bei rtf-Dateien einstelle das sie mit meiem Programm geöffnet werden sollen, funzt das nicht. Meine Frage: Hat einer ne Ahnung wie man das Programmieren muss damit das geht? Danke im Voraus |
Re: Öffnen mit...
Es sollte eigentlich reichen, wenn man den ParamStr auswertet.
Hab es aber nicht probiert. In etwa:
Delphi-Quellcode:
Frank
if ParamCount > 1 then
if FileExists(ParamStr(1) then OpenFile(ParamStr(1)); |
Re: Öffnen mit...
Ergänzend dazu: Manchmal geht es dennoch nicht, fragt mich aber nicht wieso.
|
Re: Öffnen mit...
Ne funzt nicht. :cry: Es kommt zwar keine Fehlermeldung, aber passieren tut auch nichts
|
Re: Öffnen mit...
Bei einem leerzeichen werden die weitere Parameter hinzugefügt. Du musst es also so machen:
Delphi-Quellcode:
mit dem "for i := 1..." bin ich mir nicht so sicher, könnte auch sein das du 0 schreiben musst.
procedure Form1OnCreate(sender:TObject);
var i:integer; s:string; begin if ParamCount > 1 then begin for i := 1 to paramcount-1 do s := s + paramsstr(i) if FileExists(s) then OpenFile(s); end; end; |
Re: Öffnen mit...
Wenn du im OnCreate des MainForms reinschreibst:
Delphi-Quellcode:
Zeigt er dann was an?
procedure TMainForm.FormCreate(Sender: TObject);
begin if ParamCount > 1 then ShowMessage(ParamStr(1)); end; Frank |
Re: Öffnen mit...
Zitat:
ich habe dan mal das vom "IGEL" mit 1 und O bei "FormCreate" ausprobiert
Delphi-Quellcode:
funzt aber nicht.
var i:integer;
s:string; begin if ParamCount > 1 then begin for i := 0 to paramcount-1 do s := s + ParamStr(i); if FileExists(s) then FileOpen(s); //Einge Procedure um Dateien zu öffen end; end; |
Re: Öffnen mit...
Folgendes Beispiel funktioniert bei mir (Form mit einem TRichEdit...
Delphi-Quellcode:
Ich hatte das mit ParamCount verhauen. ParamStr(0) ist zwar der Exename, aber ParamCount zählt den nicht mit.
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls; type TFRMMain = class(TForm) EDTRtf: TRichEdit; private { Private-Deklarationen } public procedure AfterConstruction; override; { Public-Deklarationen } end; var FRMMain: TFRMMain; implementation {$R *.dfm} procedure TFRMMain.AfterConstruction; begin inherited; // ShowMessage(IntToStr(ParamCount)); if ParamCount > 0 then if FileExists(ParamStr(1)) then if UpperCase(ExtractFileExt(ParamStr(1))) = '.RTF' then EDTRtf.Lines.LoadFromFile(ParamStr(1)); end; end. Frank |
Re: Öffnen mit...
Es passiert was! Leider nich das was passieren soll. Ich erhalte die Fehlermeldung:
Die Ausnahme "Unbekannter Softwarefehler" 0x0eedfade ist in der Anwendung an der Stelle 0x7c81eb33 aufgetreten. Ich schreibe den Editor dals MDI-Anwendung, demnach habe ich deien Code so modifizierd:
Delphi-Quellcode:
procedure TMainForm.AfterConstruction;
begin inherited; // ShowMessage(IntToStr(ParamCount)); with TTextForm.Create(Self) do begin //MID Formular if ParamCount > 0 then if FileExists(ParamStr(1)) then if UpperCase(ExtractFileExt(ParamStr(1))) = '.RTF' then Editor.Lines.LoadFromFile(ParamStr(1)); end; end; |
Re: Öffnen mit...
Bei MDI kann in AfterConstruction kein Form geöffnet werden.
Ich hab es mal im onIdle der App untergebracht, da hier auf jeden Fall das MainForm vollständig erzeugt ist.
Delphi-Quellcode:
Cu, Frank
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, AppEvnts; type TFRMMain = class(TForm) procedure doAppIdle(Sender: TObject; var Done: Boolean); private procedure OpenParamFile; { Private-Deklarationen } public procedure AfterConstruction; override; { Public-Deklarationen } end; var FRMMain: TFRMMain; implementation uses FRMText; {$R *.dfm} procedure TFRMMain.AfterConstruction; begin inherited; Application.OnIdle := doAppIdle; end; procedure TFRMMain.OpenParamFile; Var f : TTextForm; begin if ParamCount > 0 then if FileExists(ParamStr(1)) then if UpperCase(ExtractFileExt(ParamStr(1))) = '.RTF' then begin f := TTextForm.Create(Self); f.Editor.Lines.LoadFromFile(ParamStr(1)); f.Show; end; end; procedure TFRMMain.doAppIdle(Sender: TObject; var Done: Boolean); begin Application.OnIdle := nil; OpenParamFile; end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz