Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi geht nicht...aus ini lesen (https://www.delphipraxis.net/146872-geht-nicht-aus-ini-lesen.html)

kumar89 28. Jan 2010 14:59


geht nicht...aus ini lesen
 
Hey ich hab da noch ein klitschko kleines problem :)

zwar möchte ich von meiner ini die werte auslesen lassen und in meine edits wieder anzeigen lassen.

hier mal mein code wie ich die ini erstelle:

Delphi-Quellcode:
var Ini: TIniFile;
    i:  Integer;
begin
  ini := TIniFile.Create('C:\Beispiel.ini');
  try
    // Zum Speichern
    For i := 0 to ComponentCount - 1 do
    begin
      if (TEdit(Components[i]).Name = 'prodLK') or (TEdit(Components[i]).Name = 'unprodLK') or (TEdit(Components[i]).Name = 'GehaltServ') or
         (TEdit(Components[i]).Name = 'PersonalNK') or (TEdit(Components[i]).Name = 'Berufsbekl') or (TEdit(Components[i]).Name = 'KostenServ') or
         (TEdit(Components[i]).Name = 'AnschKostFremd') then

          ini.WriteString('Daten'+(Jahr.text),(Components[i] as TEdit).name,(Components[i] as TEdit).text)

    else if Components[i] is TEdit then
          ini.WriteString('Summen'+(Jahr.Text)+(Monat.Text),(Components[i] as TEdit).name,((Components[i] as TEdit).text));
    end;
  finally
    ini.Free;
  end;
end;
und hier wie ich die werte beziehe:

Delphi-Quellcode:
var Ini: TIniFile;
    i:   Integer;
begin
   ini := TiniFile.Create('C:\Beispiel.ini');
   // Zum Lesen
  For i := 0 to ComponentCount - 1 do begin
    If Components[i] Is TEdit then with Components[i] As TEdit Do begin
      text := ini.ReadString('Summen'+(Jahr.Text)+(Monat.Text),(Components[i] as TEdit).name,((Components[i] as TEdit).text));
    end;
  end;
  ini.Free;
end;
komme einfach nicht darauf wo der fehler ist...

mfg kumar89

Highttower 28. Jan 2010 15:06

Re: geht nicht...aus ini lesen
 
Hallo kumar89,

ich verstehe leider nicht was dein Problem ist das hat mehrere Gründe:

- Titel "geht nicht ... aus ini lesen" hat keine Aussage zu der Problemstellung
- Fehlerbeschreibung: - fehlt!

Füge das doch noch hinzu, dann kann dir auch bestimmt jemand helfen.

Viele Grüße,

Tobi

mkinzler 28. Jan 2010 15:07

Re: geht nicht...aus ini lesen
 
Was geht den genau nicht? Und ja du solltest endlich mal anfangen unsere Tipps zu beherzigen!!

exilant 28. Jan 2010 15:13

Re: geht nicht...aus ini lesen
 
Warum machst Du Dir das Leben nicht leichter und vergisst die Schleifen über die Formularkomponenten. Statt dessen schreibe den Code doch einfach so:

Delphi-Quellcode:

  ini.writestring('misc','MeinErstesEdit',MeinErstesEdit.text);
  ini.writestring('misc','MeinZweitesEdit',MeinZweitesEdit.text);
und zum einlesen:

Delphi-Quellcode:

  MeinErstesEdit.text := ini.readstring('misc','MeinErstesEdit','default1');
  MeinZweitesEdit.text := ini.readstring('misc','MeinZweitesEdit','default2');
So wird das Programm deutlich übersichtlicher.

kumar89 28. Jan 2010 15:17

Re: geht nicht...aus ini lesen
 
ja der fehler liegt daran, dass wenn ich mein projekt wieder öffne die werte nicht in die edits eingetragen werden, ind enen ich zuvor die werte geschrieben habe.

wenn ich nun compiliere kommt eine fehlermeldung in der steht:

...ist eine exception der klasse elisterror mit der meldung 'Listenindex überschreitet das Maximum (35)'

mkinzler 28. Jan 2010 15:20

Re: geht nicht...aus ini lesen
 
In diesem Fall müsstest du für jede Komponente einen Eintrag im selben Format in die Ini schreiben

hoika 28. Jan 2010 15:21

Re: geht nicht...aus ini lesen
 
Halo,

dein Fehler ist in der Tat,
dass du nicht auf uns hörst.

Delphi-Quellcode:
If Components[i] Is TEdit then with Components[i] As TEdit Do begin
      text := ini.ReadString('Summen'+(Jahr.Text)+(Monat.Text),(Components[i] as TEdit).name,((Components[i] as TEdit).text));

Is TEdit OK

Das with erschwert alles.

Aber warum wieder keine lokale Variablen !!!
Wie soll man bei diesem Kauderwelsch (Sorry, auch als Anfänger solltest du die Hinweise anwenden)
einen Fehler finden ?

1. lokale Variable
Edit: TEdit definieren

2. Breakpoint auf
Edit.Text setzen


Heiko

hoika 28. Jan 2010 15:23

Re: geht nicht...aus ini lesen
 
Hallo,

wenn ich nun compiliere kommt eine fehlermeldung in der steht:
Zitat:

...ist eine exception der klasse elisterror mit der meldung 'Listenindex überschreitet das Maximum (35)'

Unwahrscheinlich, dass das beim Kompilieren kommt,
ich denke her, es kommt beim Ablauf ?

Zeig noch mal den hoffentlich geänderten Code.


Heiko

DeddyH 28. Jan 2010 15:28

Re: geht nicht...aus ini lesen
 
Um meine Vorredner mal zusammenzufassen:
Delphi-Quellcode:
var Ini: TIniFile;
    i:   Integer;
    Edit: TEdit;
begin
  ini := TiniFile.Create('C:\Beispiel.ini');
  try
    // Zum Lesen
    For i := 0 to ComponentCount - 1 do begin
      If Components[i] Is TEdit then begin
        Edit := TEdit(Components[i]);
        Edit.Text := ini.ReadString('Summen'+(Jahr.Text)+(Monat.Text),Edit.name,'Wuppdi');
      end;
    end;
  finally
    ini.Free;
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:50 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