![]() |
Aus Ini Datei lesen
Hallo
Ich möchte Button zur Laufzeit erstellen und die Daten in einer Ini Datei speichern sodas ich beim nächsten Programmstart die Daten wieder Auslesen kann und die Button´s automatich wieder erstellt werden. Das speichern in der Datei funktioniert auch aber nicht das Auslesen. hier mein Code
Delphi-Quellcode:
hat jemand ne Idee woran das liegen könnte?
unit FRM_Fahrzeugsuche;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, RzButton, Grids, DBGrids, RzDBGrid, ExtCtrls, RzPanel, Inifiles; type TFahrzeug_auswaehlen = class(TFrame) RzPanel1: TRzPanel; RzDBGrid1: TRzDBGrid; B_Uebernehmen: TRzButton; B_Abbrechen: TRzButton; MyButton: TRZButton; procedure B_UebernehmenClick(Sender: TObject); procedure MoveControl(const Control: TControl); procedure MYButtonMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure B_AbbrechenClick(Sender: TObject); procedure Anzahllesen; procedure ButtonSpeichern; private { Private-Deklarationen } public Anzahl : Integer; AnzahlS: String; end; implementation {$R *.dfm} uses DM_Datagrund , FRM_Mainframe; procedure TFahrzeug_auswaehlen.B_AbbrechenClick(Sender: TObject); begin Hide; end; procedure TFahrzeug_auswaehlen.B_UebernehmenClick(Sender: TObject); begin MyButton :=TRzButton.Create(Self); MyButton.Parent := Mainframe.EinsatzFahrzeuge1; MYButton.Height := 49; MyButton.Width := 97; MyButton.Left := 10; MyButton.Top := 10; MyButton.Show; MyButton.Name := 'Fahrzeug' + Datagrund.QRY_Fahrzeugsuche.FieldByName('Nummer').Value; MyButton.Caption := Datagrund.QRY_Fahrzeugsuche.FieldByName('Kennzeichen').Value + ' '+'Funkname ' + Datagrund.QRY_Fahrzeugsuche.FieldByName('Funkname').Value; Hide; Anzahllesen; MyButton.OnMouseMove := MyButtonMouseMove; end; procedure TFahrzeug_auswaehlen.MoveControl(const Control: TControl); const SC_DRAGMOVE = $F012; begin ReleaseCapture; Control.Perform(WM_SYSCOMMAND,SC_DRAGMOVE,0); end; procedure TFahrzeug_auswaehlen.MYButtonMouseMove(Sender: TObject; Shift: TShiftState; X: Integer; Y: Integer); begin if ssLeft in Shift then MoveControl(Sender as TControl); end; procedure TFahrzeug_auswaehlen.Anzahllesen; var ini:TInifile; Anzahl1 : Integer; begin ini :=Tinifile.Create('System.ini'); try Anzahl1 := ini.ReadInteger('Button', 'M', 0); finally ini.Free; end; if Anzahl1 = 0 then begin Anzahl1 := 1; end else Begin Anzahl1 := Anzahl1 + 1; Anzahl := Anzahl1; AnzahlS := IntToStr(Anzahl); Buttonspeichern; End; end; procedure TFahrzeug_auswaehlen.ButtonSpeichern; var ini : TInifile; FahrzeugID: String; left : String; Top: String; begin Left := IntToStr(Mybutton.Left); Top := IntToStr(MyButton.Top); FahrzeugID := Datagrund.QRY_Fahrzeugsuche.FieldByName('ID').Value; ini := Tinifile.Create(ExtractFilePath(Paramstr(0))+ 'System.ini'); ini.WriteInteger('Button', 'M', Anzahl); ini.WriteString(AnzahlS, 'ID', FahrzeugID); ini.WriteString(AnzahlS, 'Left', Left); ini.WriteString(AnzahlS, 'Top', Top); ini.Free; end; end. MCop2001de |
Re: Aus Ini Datei lesen
Hallo,
ini :=Tinifile.Create('System.ini'); ini := Tinifile.Create(ExtractFilePath(Paramstr(0))+ 'System.ini'); Das sind 2 verschiedene Create-Aufrufe. Was passiert denn im ReadInteger bei Nutzung von F5/F7/F8/Ctrl+F5 ? Ab Win2000 darf man übrigens nicht ins Programm-Verzeichnis schreiben. Ab Vista / Win7 wird das durch Virtualisieurng noch schlimmer. Such mal hier nach GetSpecialFolder Wenn du aber eh schon eine DB hast, warum schreibst du deine Fahrzeuge nicht auch dort rein ? Heiko |
Re: Aus Ini Datei lesen
Hallo
Das problem ist nicht das Speichern das macht er das Problem ist das Die datei nicht ausgelesen wird. das Ergebnis aus dem Readinteger ist 0 also nicht der wert der in der Ini Datei steht. Die Fahrzeugdaten sind in der Datenbank hinterlegt.Aber nicht die button daten. Ist es den sinvoll diese dort zu speichern? |
Re: Aus Ini Datei lesen
Hallo,
deinen Code mal etwas formatiert
Delphi-Quellcode:
ini :=Tinifile.Create('System.ini'); // siehe #2
try Anzahl1 := ini.ReadInteger('Button', 'M', 0); finally ini.Free; end; if Anzahl1 = 0 then begin Anzahl1 := 1; // wo wird hier Anzahl and AnzahlS gesetzt end else Begin Anzahl1 := Anzahl1 + 1; Anzahl := Anzahl1; AnzahlS := IntToStr(Anzahl); Buttonspeichern; End; Heiko |
Re: Aus Ini Datei lesen
Hallo Heiko
Der Code müsste dann so aussehen
Delphi-Quellcode:
Beim betrachten mit F7 ist der Wert von Anzahl1 = 0 führe ich den Code weiter aus wird mir eine System.ini erstellt.
begin
ini :=Tinifile.Create('System.ini'); try Anzahl1 := ini.ReadInteger('Button', 'M', 0); finally ini.Free; end; if Anzahl1 = 0 then begin Anzahl1 := 1; Anzahl := Anzahl1; AnzahlS := IntToStr(Anzahl); end else Begin Anzahl1 := Anzahl1 + 1; Anzahl := Anzahl1; AnzahlS := IntToStr(Anzahl); End; Buttonspeichern; end; Der Inhalt der ini datei ist dann folgender [Button] M=1 [1] ID=1 Left=10 Top=10 Also werden die Werte ja gespeichert ich kann diese aber nicht mehr auslesen. Woran kann des liegen. |
Re: Aus Ini Datei lesen
Hallo MCOP2001DE,
ich vermute das hoika das Problem von Dir schon in #2 angesprochen hat. Wahrscheinlich benutzt Du für das Schreiben und Lesen unterschiedliche Path Angaben:
Delphi-Quellcode:
Mache diese mal gleich und wenn das nichts nutzt füge einen TOpenDialog ein und versuche die Ini-Datei darüber zu setzen.
ini :=Tinifile.Create('System.ini');
ini := Tinifile.Create(ExtractFilePath(Paramstr(0))+ 'System.ini'); Bis bald Chemiker |
Re: Aus Ini Datei lesen
Ja so gehts :-D habe beide Patch gleich geschrieben.
Ich dachte immer der eine sei zum lesen und der andere zum schreiben. Danke |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:39 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