Autor Beitrag
rafi@work
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 147

Win2000 Prof
D7 Enterprise
BeitragVerfasst: Fr 20.08.04 12:49 
Hallo zusammen

Ich muss eine INI Datei mit einem Klick auf einen Button öffnen können. So wie auch eine INI geöffnet wird, wenn man sie im Windows doppelklickt. Ich habe die Funktion 'FileOpen' einwenig studiert, aber damit funktioniert es IMHO nicht. Hat jemand eine Idee?

Gruss
Sprint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: Fr 20.08.04 13:17 
Mit ShellExecute zum Beispiel.
ausblenden Quelltext
1:
ShellExecute(0, 'open', IniFilename, nil, nil, SW_SHOWNORMAL);					

_________________
Ciao, Sprint.
raven_22
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 95

Win XP pro
D7 Enterprise
BeitragVerfasst: Do 02.09.04 02:06 
Hi rafi@work !

Was willst du mit der INI machen ?
Kennst du den Inhalt der INI ?
Zum auslesen der Werte brauchst du die Sektion und den Name des zu lesenden Werts.
Solltest du aber nur den gesamten Inhalt anzeigen wollen, dann schau dir den Code mal an.

LG raven 8)

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
unit Unit1;

interface

uses
  ...;

type
  TForm1 = class(TForm)
    OpenDialog1: TOpenDialog;
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


function Get_Ini(IniFile:string):tstringlist;
begin
Result:=Tstringlist.Create;
Result.LoadFromFile(IniFile);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
OpenDialog1.Filter:='Ini-File (*.ini)|*.ini';
OpenDialog1.Execute;
Memo1.ScrollBars:=ssVertical;
Memo1.Clear;
Memo1.lines:=Get_Ini(OpenDialog1.FileName);
end;

end.

_________________
---_-= raven_22 =-_---
bms
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 735

Win XP
Delphi 3, Delphi 6 PE, Delphi 2005 PE
BeitragVerfasst: Do 02.09.04 09:19 
rafi@work hat folgendes geschrieben:
Ich muss eine INI Datei mit einem Klick auf einen Button öffnen können. So wie auch eine INI geöffnet wird, wenn man sie im Windows doppelklickt. Ich habe die Funktion 'FileOpen' einwenig studiert, aber damit funktioniert es IMHO nicht. Hat jemand eine Idee?


Vergiss solche Satzteile wie "mit einem Klick auf einen Button öffnen können". Das interessiert erst einmal keinen. Das ist ein Programmiererforum und ein Klick auf einen Button ist nur ein Ereignis. Du kannst es genauso mit einem Klick auf einem Label oder Image ereichen. Wenn du also Programmierer werden willst, dann gewöhn dir sowas wie "ich will auf einen Button klicken und dann soll das passieren" ab. Der Buttonklick interessiert keinen, macht dich vor anderen aber zu einem absoluten Anfänger. Denn nur Anfänger stellen die Fragen so.

Dann solltest du auch sowas wie "wenn man sie im Windows doppelklickt" vermeiden. Im Windows kann man nicht doppelklicken, höhstens im Explorer oder auf dem Desktop usw. Werde in Zukunft etwas genauer.

Deine Fragen könnte so klingen:

"Ich will meine INI Datei im Notepad (bzw. Editor) anzeigen. Wie kann ich das erreichen? Wie kann ich eine Datei öffnen? Ich hab mir die Funktion 'FileOpen' angesehen, aber damit geht es nicht. Hat jemand eine Idee?"

Dann braucht auch keiner zu raten was du meinst.

_________________
VORSICHT: Ich behersche seit heute die Fünf-Finger-Handflächen-Herz-Explodier-Schlag-Kampf-Technik >:(
raven_22
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 95

Win XP pro
D7 Enterprise
BeitragVerfasst: Do 02.09.04 16:31 
@bms

Sicher willst du nur freundlich sein und ihm weiterhelfen.
Du kommst dabei aber einweinig wie ein Oberlehrer rüber.
Vielleicht sehe dass nur ich so.
Ich hoffe du nimmst es mir nicht übel, dass mit dem Oberlehrer.
Anfänger helfen ist ja vollkommen in Ordnung, aber Nachhilfe in Deutsch !?
Ich habe hier schon viel schlimmeres gelesen.
Wenn man nicht ganz so denkfaul ist, versteht man schon was er meint.

@rafi@work

Bitte schreibt noch mal etwas genauer was du eigentlich machen willst.
Willst du vielleicht dass systemweit alle Ini-Dateien mit deinem Programm geöffnet werden ?
Soll heißen, man öffnet eine Ini-Datei, dein Programm startet automatisch und die Ini-Datei kann mit deinem Programm angezeigt oder bearbeitet werden.
Oder willst du nur eine Ini-Datei in deinem Programm öffnen/laden ?
Wenn du dein Programm als Standardprogramm zum öffnen von INI-Dateien nutzen willst, so kannst du das mit folgendem Code machen.

LG raven 8)

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses Registry;

Procedure Set_IniApp;
var Reg:Tregistry;
begin

Reg:=Tregistry.Create;
Reg.RootKey:=HKEY_CLASSES_ROOT;
Reg.OpenKey('inifile\shell\open\command',true);

 if Reg.ValueExists('Org') = false then
  begin
  Reg.WriteExpandString('Org',Reg.ReadString(''));
  end;

 if reg.ValueExists('Org') = true then
  begin
  Reg.WriteExpandString('',Application.ExeName+' %1');
  Showmessage('Änderung geschreiben !');
  end
 else
  showmessage('Fehler bei schreiben !');

Reg.Free;
end;


Procedure DEL_IniApp;
var Reg:Tregistry;
begin

Reg:=Tregistry.Create;
Reg.RootKey:=HKEY_CLASSES_ROOT;
Reg.OpenKey('inifile\shell\open\command',true);
 
 if Reg.ValueExists('Org') = false then
  begin
  reg.WriteExpandString('','%SystemRoot%\System32\NOTEPAD.EXE %1');
  end
 else
  Reg.WriteExpandString('',reg.ReadString('Org'));
  Reg.DeleteValue('Org');

 if Reg.ValueExists('') = true then
  begin
  Showmessage('Änderung geschrieben !');
  end
 else
  Showmessage('Fehler bei schreiben !');

Reg.Free;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin

 Button1.Caption:='App Setzen';
 Button2.Caption:='App Löschen';

 if Paramcount > 0 then
 begin
 Memo1.ScrollBars:=ssVertical;
 Memo1.Clear;
 memo1.Lines.LoadFromFile(ParamStr(1));
 end;

end;


procedure TForm1.Button1Click(Sender: TObject);
begin
Set_IniApp;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
DEL_IniApp;
end;

end.

_________________
---_-= raven_22 =-_---