Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Problem beim schreiben in eine ini Datei (https://www.delphipraxis.net/13582-problem-beim-schreiben-eine-ini-datei.html)

LoW_FloW 21. Dez 2003 18:58


Problem beim schreiben in eine ini Datei
 
Bei folgenden Sourcecode, den ich von Typer "ausgeliehen" habe [ big thx :thuimb: ], habe ich ein Problem.
Ich weiß nicht, welche Variable für ini stehen muss (String, Integer, usw.).
Delphi-Quellcode:
// PROZEDURE 1: SPEICHERN

// Nur dann, wenn die Edit-Felder überhaupt Text enthalten
if (Edit1.Text <>'') AND (Edit2.Text <> '') then begin

    // Zuerst die Value-List mit den Werten füllen, das True am Ende
    // steht für "Anhängen", hätte ich hier ein False, und würde der
    // Wert aus Edit1 schon existieren, würde der zugehörige Value
    // von Edit1 mit dem neuen Inhalt von Edit2 überschrieben werden
    ValueList.InsertRow(Edit1.Text,Edit2.Text, True);

    //Edit-Felder zurücksetzen
    Edit1.Text := '';
    Edit2.Text := '';

    //festlegen, in welche Datei wir schreiben
    [color=red][b]ini[/b][/color] := TIniFile.Create('.\connections.ini');

    // Schleife, um alle Werte der Value-List in die Ini zu schreiben
    // warum for i := 1? Bei Null würde auch der Tabellenkopf mit
    // mit gespeichert werden! 
    for i := 1 to (ValueList.RowCount - 1) do begin
       // Zuerst den Key, logisch, und dann den dazugehörigen Wert,
       // den wir leider nicht über den Index sondern über den
       // Key direkt rausfinden! 
       ini.WriteString('Sektion1', ValueList.Keys[i],    
                        ValueList.Values[ValueList.Keys[i]]);
    end;
    ini.Free;
end;
// Fertig
==============================================
sry, aber ich bin noch ein n00b! :gruebel:
Bitte um Hilfe :wink:

[edit=Luckie] Mfg, Luckie[/edit]

Die Muhkuh 21. Dez 2003 19:01

Re: Problem mit einer Variable
 
Hi und willkommen in der DP :hi: :dp:

Schreib das dazu

Delphi-Quellcode:
uses Inifiles

...


var
  Ini : TIniFile;
Dann sollte es gehen


Edit: Achso schreib den Code in die Delphi-Tags [ delphi]*Code*[/delphi]. Danke

LoW_FloW 21. Dez 2003 19:12

Re: Problem mit einer Variable
 
danke @ Spider :thuimb:

du bist ja sau schnell..

funzt alles SUPER

Die Muhkuh 21. Dez 2003 19:14

Re: Problem mit einer Variable
 
Danke für die Blumen

LoW_FloW 21. Dez 2003 20:42

Re: Problem mit einer Variable
 
Hab ein neues Problem...Der Text wird zwar aus der ValueList gelöscht, aber nicht aus der Datei (daten.ini).
Ich nehme an, es hat etwas mit dem ini.DeleteKey('Daten', ValueList.Keys[ValueList.Row] ) zu tun

Delphi-Quellcode:
// Prozedure 3: Das Löschen

  // hier brauch man glaub ich nicht viel erklären, hier wird einfach
  // der Wert aus der Ini gelöscht, der im Moment in der ValueList
  // markiert ist
  ini := TIniFile.Create('.\daten.ini');
  ini.DeleteKey([color=red]'Daten'[/color] :gruebel:, ValueList.Keys[ValueList.Row] );
  ini.Free;
 
  // Und erst danach können wir den Wert selber auch aus der
  // Valuelist entfernen
  Connections.DeleteRow(Connections.Row);

// und fertich
====================================
Für Hilfe wäre ich sehr dankbar... :roll:

[edit=Luckie]Warum packst du den Code immer in Quote-Tags? Wir haben extra Delphi-Tags für Delphi-Code. Mfg, Luckie[/edit]

SirThornberry 21. Dez 2003 20:48

Re: Problem mit einer Variable
 
wo liegt jetzt das problem?? geht deletekey nicht?

alcaeus 21. Dez 2003 20:50

Re: Problem mit einer Variable
 
Ist der Key auch nach dem Schließen der Connection noch in der Datei? Es könnte sein dass Änderungen erst beim Schließen der Verbindung zur ini-Datei geschrieben werden, aber ich will nicht zuviel sagen, ich kenn mich nicht wirklich aus :oops:

LoW_FloW 21. Dez 2003 20:56

Re: Problem mit einer Variable
 
Zitat:

Zitat von alcaeus
...Es könnte sein dass Änderungen erst beim Schließen der Verbindung zur ini-Datei geschrieben werden, aber ich will nicht zuviel sagen, ich kenn mich nicht wirklich aus :oops:

Genau das trifft zu, nur wie kann man das ändern, dass die während des laufen des Programms die ini-Datei gändert wird?
Aber erst mal vielen Dank an alcaeus :thuimb: für die Antwort

alcaeus 21. Dez 2003 20:58

Re: Problem mit einer Variable
 
Poste mal einen Link zum gesamten Source, dann kann ich das ganze mal durchchecken und schauen was möglich ist..

LoW_FloW 21. Dez 2003 21:37

Re: Problem mit einer Variable
 
Das wird einfach nicht aus der INI gelöscht...nur aus der ValueList!
Hier der volle Source:
Code:
unit uDatenbank;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, ValEdit, ExtCtrls, StdCtrls, Inifiles;

type
  TForm1 = class(TForm)
    cbSperren: TCheckBox;
    lblSperren: TLabel;
    Panel1: TPanel;
    Label2: TLabel;
    ValueList: TValueListEditor;
    Edit1: TEdit;
    btnListe: TButton;
    Button2: TButton;
    Edit2: TEdit;
    Button3: TButton;
    Panel2: TPanel;
    Label1: TLabel;
    Label3: TLabel;
    procedure btnListeClick(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Ini : TIniFile;
  Sections: TStringlist;
implementation

{$R *.dfm}

procedure TForm1.btnListeClick(Sender: TObject);
var
i : integer ;
begin

if (Edit1.Text <>'') AND (Edit2.Text <> '') then begin
    ValueList.InsertRow(Edit1.Text,Edit2.Text, True);
    Edit1.Text := '';
    Edit2.Text := '';
    ini := TIniFile.Create('.\daten.ini');
    // Schleife, um alle Werte der Value-List in die Ini zu schreiben
    // warum for i := 1? Bei Null würde auch der Tabellenkopf mit
    // mit gespeichert werden!
    for i := 1 to (ValueList.RowCount - 1) do begin
       // Zuerst den Key, logisch, und dann den dazugehörigen Wert,
       // den wir leider nicht über den Index sondern über den
       // Key direkt rausfinden! 
       ini.WriteString('Sektion1', ValueList.Keys[i],
                        ValueList.Values[ValueList.Keys[i]]);
    end;
    ini.Free;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
i : integer ;
// j, help : integer ;
begin
//    for j := 0 to (ValueList.RowCount - 1) do
//     ValueList.DeleteRow(i);
  Sections := TStringList.Create;
  ini := TIniFile.Create('.\daten.ini');
  ini.ReadSection('Sektion1', Sections);
  ini.ReadSectionValues('Sektion1', Sections);
  for i := 0 to Sections.Count - 1 do
     ValueList.InsertRow(Sections.Names[i],Sections.Values
               [Sections.Names[i]],True);
  ini.Free;
  Sections.Free;
end;

[b]procedure TForm1.Button3Click(Sender: TObject);
begin
  // hier brauch man glaub ich nicht viel erklären, hier wird einfach
  // der Wert aus der Ini gelöscht, der im Moment in der ValueList
  // markiert ist
  ini := TIniFile.Create('.\daten.ini');
  ini.DeleteKey('Daten', ValueList.Keys[ValueList.Row] );
  ini.Free;

  // Und erst danach können wir den Wert selber auch aus der
  // Valuelist entfernen
  ValueList.DeleteRow(ValueList.Row);

end;[/b]

end.
Für Hilfe wäre ich dankbar


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:57 Uhr.
Seite 1 von 2  1 2      

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