Avatar billede thomas-sp2k Nybegynder
16. juni 2000 - 15:38 Der er 10 kommentarer og
1 løsning

Ini Fil

Hej !

Jeg har fundet ud af hvordan man bruger ini fil til at gemme position af ens vindue men hvordan kan man bruge en Edit box ?

;)

Håber der er nogen der kan hjælpe...

Hvis i vil svare kan i lige se min kode !

/Thomas
Avatar billede borrisholt Novice
16. juni 2000 - 15:56 #1
Hej Thomas
Kunne du ikke uddybe dit spørgsmål. Jeg er ikke klar over hvad du spørger om ...


Jens B
Avatar billede dj Nybegynder
16. juni 2000 - 17:12 #2
Uses inifiles

...


procedure GemTilInifilFraEdit;
var
  ini: Tinifile;
begin
  ini:=Tinifile.create('c:\temp.ini');
  ini.writestring('Section','Noget',edit1.text);
  ini.free;
end;

Function laesfrainifil:string;
var
  ini: Tinifile;
begin
  ini:=Tinifile.create('c:\temp.ini');
  result:=ini.readstring('Section','Noget','');
  ini.free;
end;

procedure Button1.click(sender: Tobject);
begin
GemTilInifilFraEdit; //Gemmer til inifilen
Edit1.text:=laesfrainifil; //Læser værdien fra inifilen
end;

----------------------------------

Dette viser det grundlæggende, istedet for at bruge egne procedurer og funktioner som jeg har gjort i eksemplet her, kan du bare kopiere koden ind under f.eks. eventen for en knap.

Jeg håber det kan hjælpe dig videre :)

mvh. _DJ_
Avatar billede thomas-sp2k Nybegynder
16. juni 2000 - 20:06 #3
Hej alle sammen¨

Jeg vil lige prøve "dj's" om det dur men det var noget lign. som jeg selv havde lavet men det dur bare ikke :(

så jeg prøver lige "dj's"
Avatar billede dj Nybegynder
16. juni 2000 - 20:44 #4
Da mit eksempel ovenover ikke er helt komplet og jeg ikke er 100% sikker på at du kan udrede det selv, så har jeg hermed givet dig et komplet eksempel:

Eksemplet viser både hvordan du bruger Inifiler og Registreringsdatabasen til at gemme og loade informationer fra:

----------------------------------------------------------------------

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Button2: TButton;
    Edit3: TEdit;
    Edit4: TEdit;
    Button3: TButton;
    Button4: TButton;
    Label1: TLabel;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure iniadd(filename: string; Section: string; Name: string; value: string);
var
  ini: Tinifile;
begin
  ini:=Tinifile.create(filename);
  ini.WriteString(section,name,value);
  ini.free;
end;

function iniread(filename: string; Section: string; Name: string; defaultvalue: string):string;
var
  ini: Tinifile;
begin
  ini:=Tinifile.create(filename);
  result:=ini.readString(section,name,defaultvalue);
  ini.free;
end;

procedure regadd(Rootkey: HKEY; Key: string; Name: String; value: string);
var
  reg: Tregistry;
begin
  reg:=Tregistry.create;
  reg.rootkey:=rootkey;
  reg.OpenKey(key,true);
  reg.writestring(name,value);
  reg.free;
end;

function regread(Rootkey: HKEY; Key: string; Name: String):string;
var
  reg: Tregistry;
begin
  reg:=Tregistry.create;
  reg.rootkey:=rootkey;
  reg.OpenKey(key,true);
  result:=reg.readstring(name);
  reg.free;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  regadd(HKEY_LOCAL_MACHINE,'software\SGUFT Software\test','Test',edit1.text);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  edit2.text:=regread(HKEY_LOCAL_MACHINE,'software\SGUFT Software\test','Test');
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  iniadd('c:\test.ini','Test','Mam',edit3.text);
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  edit4.text:=iniread('c:\test.ini','Test','Mam','null');
end;

end.
Avatar billede dj Nybegynder
16. juni 2000 - 20:46 #5
du skal selvfølgelig lige selv tilføje 4 knapper og 4 editbokse for at eksemplet virker fuldt ud, for at gøre det nemmer kan du også bare kopiere følgende ind. (dette gøres ved at højreklikke på formen og vælge "view as text")

--------------------------

object Form1: TForm1
  Left = 331
  Top = 158
  Width = 349
  Height = 327
  Caption = 'Form1'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object Label1: TLabel
    Left = 56
    Top = 40
    Width = 38
    Height = 13
    Caption = 'Registry'
  end
  object Label2: TLabel
    Left = 56
    Top = 168
    Width = 27
    Height = 13
    Caption = 'Inifiler'
  end
  object Edit1: TEdit
    Left = 56
    Top = 64
    Width = 121
    Height = 21
    TabOrder = 0
  end
  object Edit2: TEdit
    Left = 56
    Top = 104
    Width = 121
    Height = 21
    TabOrder = 1
  end
  object Button1: TButton
    Left = 208
    Top = 64
    Width = 75
    Height = 25
    Caption = 'save'
    TabOrder = 2
    OnClick = Button1Click
  end
  object Button2: TButton
    Left = 208
    Top = 104
    Width = 75
    Height = 25
    Caption = 'load'
    TabOrder = 3
    OnClick = Button2Click
  end
  object Edit3: TEdit
    Left = 56
    Top = 192
    Width = 121
    Height = 21
    TabOrder = 4
  end
  object Edit4: TEdit
    Left = 56
    Top = 224
    Width = 121
    Height = 21
    TabOrder = 5
  end
  object Button3: TButton
    Left = 208
    Top = 192
    Width = 75
    Height = 25
    Caption = 'save'
    TabOrder = 6
    OnClick = Button3Click
  end
  object Button4: TButton
    Left = 208
    Top = 224
    Width = 75
    Height = 25
    Caption = 'load'
    TabOrder = 7
    OnClick = Button4Click
  end
end

------------------------

well, nu bliver det vist ikke meget mere detaljeret :)

Mvh. _DJ_
Avatar billede thomas-sp2k Nybegynder
17. juni 2000 - 16:35 #6
Hej dj

Hvordan kan man få den til at gemme position af ens form i dit eksemple ?
Avatar billede thomas-sp2k Nybegynder
17. juni 2000 - 16:36 #7
altså Width, Height, Top, Left ??? hvordan ???
Avatar billede dj Nybegynder
17. juni 2000 - 20:03 #8
hvis du har valgt mit eksempel nr.2 så kan det gøres på følgende måde:

Lav en knap der ser sådan ud:

(Denne gemmer positionerne til inifilen, istedet for en knap vil det nok være en fordel at anvende OnClose eventen, sådan at det udføres når programmet lukkes ned)

procedure TForm1.Button4Click(Sender: TObject);
begin
  iniadd('c:\test.ini','placering','Left',inttostr(form1.left));
  iniadd('c:\test.ini','placering','Top',inttostr(form1.top));
  iniadd('c:\test.ini','placering','Width',inttostr(form1.width));
  iniadd('c:\test.ini','placering','Height',inttostr(form1.height));
end;

Når du så skal loade dem igen så kan dette gøres således:
(Dette kan også placeres under Onshow eventen, sådan at det udføres når programmet starter op)

procedure TForm1.Button4Click(Sender: TObject);
begin
  form1.left := strtoint(iniread('c:\test.ini','placering','left',inttostr(form1.left)));
  form1.top := strtoint(iniread('c:\test.ini','placering','Top',inttostr(form1.top)));
  form1.width := strtoint(iniread('c:\test.ini','placering','width',inttostr(form1.width)));
  form1.height := strtoint(iniread('c:\test.ini','placering','height',inttostr(form1.height)));
end;


Håber dette hjalp list på det :)

mvh. _DJ_
Avatar billede thomas-sp2k Nybegynder
17. juni 2000 - 22:32 #9
Oki tak nu dur det MEEEN jeg har lige et lille spm mere !

Jeg har så også en Checkbox som jeg også vil gemme i min ini fil, og så når den er true skal min MainForm være fsStayOnTop og når den er false skal den så være fsNormal men hvordan gør man det når jeg vil have den til at gemme det i en ini fil ???

Håber du vil svare :o) Du kan da få lidt flere point ;o)

/Thomas
Avatar billede dj Nybegynder
17. juni 2000 - 23:03 #10
tænk på det lidt anderledes .. du skal jo ikke gemme om formen er fsStayOnTop eller ej. Det som du skal tænke på er en simpel IF sætning .. check først hvilken status din checkbox er således:

If checkbox1.Checked=true then begin
  //her gemmes en string til Inifilen hvis den er true, kunne se således ud:
  iniadd('c:\test.ini','Checkbox','Status','true');
end
else begin
  //her gemmes en string til Inifilen hvis den er false, kunne se således ud:
  iniadd('c:\test.ini','Checkbox','Status','false');
end;

Når du så vil aflæse værdien senere gøres det jo bare omvendt altså:

If iniread('c:\test.ini','Checkbox','Status','true')='true' then begin
  checkbox1.Checked:=true;
end
else begin
  checkbox1.Checked:=false;
end;

Så kan du jo selv indsætte fsStayOnTop og fsNormal de rette steder. Som du kan se er det der skal udføres ligegyldigt, det drejer sig bare om at lave nogle IF sætninger og skrive sandt eller falskt eller noget tredje i en inifil, hvad der så skal udføres ud fra det kan jo være ligegyldigt, fremgangsmåden er den samme, jeg håber du forstår, ellers så prøv dig frem :)
Avatar billede thomas-sp2k Nybegynder
17. juni 2000 - 23:21 #11
Oki tak nu dur det som jeg vil have det til ;o)

Takker

/Thomas
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester