Avatar billede clansite.dk Nybegynder
02. december 2004 - 12:29 Der er 10 kommentarer

INI filer igen..

procedure TForm1.CheckBox1Click(Sender: TObject);
var
    myINI : TINIFile;
begin
    myINI := TINIFile.Create(ExtractFilePath(Application.EXEName) + 'Settings.ini');

  if (CheckBox1.Checked) then
    myINI.WriteString('Settings', 'Autoload', '');
    myINI.Free;
  if NOT (CheckBox1.Checked) then
    myINI.WriteString('Settings', 'Autoload', 'Checked');
    myINI.Free;

end;

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

Hvordan kan det være at det ikke virker? Kan åbne programmet, men når jeg prøver at udføre funktionen går det galt.

//Calle
Avatar billede -mundi- Nybegynder
02. december 2004 - 12:31 #1
måske mangler du en \ imellem sti og filnavn ?
ExtractFilePath(Application.EXEName) + '\Settings.ini');
Avatar billede clansite.dk Nybegynder
02. december 2004 - 12:33 #2
Nej, det er ikke det.
Avatar billede snowball Novice
02. december 2004 - 12:36 #3
Prøv med nedenstående. Problemet er at du ligemeget hvad får udført myINI.Free; 2 gange, og det vil selvfølgelig fejle anden gang eftersom objektet allerede er blevet frigivet.

procedure TForm1.CheckBox1Click(Sender: TObject);
var
    myINI : TINIFile;
begin
    myINI := TINIFile.Create(ExtractFilePath(Application.EXEName) + 'Settings.ini');

  if (CheckBox1.Checked) then
    myINI.WriteString('Settings', 'Autoload', '');
  else
    myINI.WriteString('Settings', 'Autoload', 'Checked');

    myINI.Free;

end;
Avatar billede snowball Novice
02. december 2004 - 12:36 #4
Og det bør vel egentlig være nedenstående !?

  if (CheckBox1.Checked) then
    myINI.WriteString('Settings', 'Autoload', 'Checked');
  else
    myINI.WriteString('Settings', 'Autoload', '');
Avatar billede clansite.dk Nybegynder
02. december 2004 - 12:56 #5
Det jeg vil er at når man klikker i feltet skal den tjekke om den bliver checked eller unchecked.

Og hvis den bliver checked skal den skrive til Settings.ini at den er checked, ellers skal den skrive den er unchecked.

Håber du forstår :o)

//Calle
Avatar billede snowball Novice
02. december 2004 - 13:02 #6
procedure TForm1.CheckBox1Click(Sender: TObject);
var
  myINI : TINIFile;
begin
  myINI := TINIFile.Create(ExtractFilePath(Application.EXEName) + 'Settings.ini');

  If (CheckBox1.Checked) Then
    myINI.WriteString('Settings', 'Autoload', 'Checked')
  Else
    myINI.WriteString('Settings', 'Autoload', 'Unchecked');

  myINI.Free;
end;
Avatar billede eht Nybegynder
02. december 2004 - 19:38 #7
Det går galt fordi du kalder
myINI.Free 2 gange.

PS. Når du vil gemme en værdi fra en checkbox er det bedre at bruge writebool.
Kode ser så sådan her ud.

procedure TForm1.CheckBox1Click(Sender: TObject);
var
    myINI : TINIFile;
begin
    myINI := TINIFile.Create(ExtractFilePath(Application.EXEName) + 'Settings.ini');

    myINI.WriteString('Settings', 'Autoload',CheckBox1.Checked);
    myINI.Free;
end;
Avatar billede eht Nybegynder
02. december 2004 - 19:39 #8
Jeg glemte lige at rette writestring til WriteBool
Sådan skal det se ud:

procedure TForm1.CheckBox1Click(Sender: TObject);
var
    myINI : TINIFile;
begin
    myINI := TINIFile.Create(ExtractFilePath(Application.EXEName) + 'Settings.ini');

    myINI.WriteBool('Settings', 'Autoload',CheckBox1.Checked);
    myINI.Free;
end;
Avatar billede kammeyer Nybegynder
03. december 2004 - 11:58 #9
Holder på snowball

Men din indrykning gør ingen forskel i din IF. IF tager kun 1 linie efterfølgende - med mindre du benytter BEGIN og END

Eks:
  if (CheckBox1.Checked) then begin
    myINI.WriteString('Settings', 'Autoload', 'Checked');
    myINI.Free;
  end;
  if NOT (CheckBox1.Checked) then begin
    myINI.WriteString('Settings', 'Autoload', 'UnChecked');
    myINI.Free;
  end;
Avatar billede snowball Novice
13. december 2004 - 18:01 #10
clansite.dk: Fik du løst problemet? :)
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