AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Aus Ini Datei lesen

Ein Thema von MCOP2001DE · begonnen am 5. Mai 2010 · letzter Beitrag vom 5. Mai 2010
Antwort Antwort
MCOP2001DE

Registriert seit: 19. Jun 2004
89 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

Aus Ini Datei lesen

  Alt 5. Mai 2010, 07:13
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:
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.
hat jemand ne Idee woran das liegen könnte?

MCop2001de
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Aus Ini Datei lesen

  Alt 5. Mai 2010, 07:40
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
Heiko
  Mit Zitat antworten Zitat
MCOP2001DE

Registriert seit: 19. Jun 2004
89 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

Re: Aus Ini Datei lesen

  Alt 5. Mai 2010, 08:59
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?
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Aus Ini Datei lesen

  Alt 5. Mai 2010, 09:24
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
Heiko
  Mit Zitat antworten Zitat
MCOP2001DE

Registriert seit: 19. Jun 2004
89 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#5

Re: Aus Ini Datei lesen

  Alt 5. Mai 2010, 19:24
Hallo Heiko

Der Code müsste dann so aussehen
Delphi-Quellcode:
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;
Beim betrachten mit F7 ist der Wert von Anzahl1 = 0 führe ich den Code weiter aus wird mir eine System.ini erstellt.
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.
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.859 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Aus Ini Datei lesen

  Alt 5. Mai 2010, 19:59
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:
ini :=Tinifile.Create('System.ini');
ini := Tinifile.Create(ExtractFilePath(Paramstr(0))+ 'System.ini');
Mache diese mal gleich und wenn das nichts nutzt füge einen TOpenDialog ein und versuche die Ini-Datei darüber zu setzen.

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
MCOP2001DE

Registriert seit: 19. Jun 2004
89 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#7

Re: Aus Ini Datei lesen

  Alt 5. Mai 2010, 20:37
Ja so gehts habe beide Patch gleich geschrieben.
Ich dachte immer der eine sei zum lesen und der andere zum schreiben.

Danke
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz