05. april 2007 - 00:06Der er
5 kommentarer og 2 løsninger
ini filer
Hej eksoerter....
Jeg ligger og roder lidt med nogle inifiler. men kan ikke få det ril at virke som jeg gerne vil...
jeg er igang med et større program hvor jeg gerne vil kunne vælge mellem nogle bagrunde, det virker fint. Men problemet er jeg vil gerne kunne beholde den samme baggrúnd selvom jeg lukker programmet ned. og når jeg skifter bagrund skal den så blive gemt så den automatisk er der når jeg starter op igen...
her kommer den kode jeg bruger når jeg henter en ny bagrund til programmet...
rocedure TForm2.Instillinger1Click(Sender: TObject); var MyINI: TINIFile; // TINIFile objektet PathToINIFile: String; begin PathToINIFile := IncludeTrailingBackslash(ExtractFilePath(ParamStr(0)))+'fa.ini'; {Skab objektet}
if OpenDialog1.Execute then try Image1.Picture.LoadFromFile(OpenDialog1.Filename); except on EInvalidGraphic do Image1.Picture.Graphic := nil; end; MyINI := TINIFile.Create(PathToINIFile); MyINI.WriteString('Baggrund', 'Bagrundsbilled',image1); end;
som i kan se har jeg prøvet mig frem men kan bare ikke få det til at virke. og det er rigtig træls...
Jeg har ændret i INI filen - med henblik på slåfejlene.
procedure TForm1.Button1Click(Sender: TObject); var MyINI: TINIFile; // TINIFile objektet PathToINIFile: String; begin PathToINIFile := IncludeTrailingBackslash(ExtractFilePath(ParamStr(0)))+'fa.ini'; {Skab objektet}
if OpenDialog1.Execute then try Image1.Picture.LoadFromFile(OpenDialog1.Filename); MyINI := TINIFile.Create(PathToINIFile); MyINI.WriteString('Baggrund', 'Baggrundsbillede',OpenDialog1.FileName); MyINI.Free; except on EInvalidGraphic do Image1.Picture.Graphic := nil; end; end;
Glemte lige ... jeg har også ændret den streng der gemmes i INI filen i min Button1Click - det er nu OpenDialog1.FileName - og den ændres kun hvis du klikker OK i OpenDialog - altså den er med i Try blokken.
Jeg har også lagt et 'default.jpg' ind i min mappe med programmet - således at der altid er et "standard" billede hvis der ikke er dannet nogen INI fil. Det er i stedet for 'Ikke fundet' strengen.
Har lige lavet et lille program der gør det du gerne vil have det til - på aller simpleste måde - og med fornuftige (hvis man ellers kan lide ... var det Ungarsk navngivningsnotation?) navne - og med konstanter. Åhh. ja. Du skal huske at frigive dine objekter igen (Kan ikke lade være med at moralisere).
procedure TfrmMain.btnSetImageClick(Sender: TObject); begin SetBackground; end;
procedure TfrmMain.FormCreate(Sender: TObject); begin fPath := IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName));
with TINIFile.Create(fPath+IniFile) do try fBackground := ReadString(IniSection,IniValue,''); finally Free; end;
if fBackground = '' then iBackground.Picture.Graphic := nil else iBackground.Picture.LoadFromFile(fBackground); end;
procedure TfrmMain.FormDestroy(Sender: TObject); begin with TINIFile.Create(fPath+IniFile) do try WriteString(IniSection,IniValue,fBackground); finally Free; end; end;
procedure TfrmMain.SetBackground; begin opdBackground.Filename := fBackground; if opdBackground.Execute then begin fBackground := opdBackground.Filename; iBackground.Picture.LoadFromFile(fBackground); end; end;
Egentlig kan du bare ignorere den. I mit eksempel bruger jeg IncludeTrailingPathDelimiter der er platformuafhængig
Synes godt om
Ny brugerNybegynder
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.