Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Combobox in eine Ini einlesen (https://www.delphipraxis.net/146862-combobox-eine-ini-einlesen.html)

kumar89 28. Jan 2010 08:57


Combobox in eine Ini einlesen
 
Sers Delphi-Programmierer,

Nämlich hab ich eine Combobox , wenn ich in der Combobox ein Eintrag auswähle soll der Eintrag in der Ini eingetragen werden.

Code:
if Components[i] is TCombobox then
          ini.WriteString('Jahr',(Components[i] as TCombobox).name,((Components[i] as TCombobox).text));
bisher hab ich den Code stehen, was müsste ich daran ändern?


Vielen dank im voraus :thumb:


mfg

kumar89

mkinzler 28. Jan 2010 09:01

Re: Combobox in eine Ini einlesen
 
Ich würde nicht den Text sondern den Inhalt des ausgewählten Eintrags in die Ini schreiben
Delphi-Quellcode:
    name := (Components[i] as TCombobox).name;
    value := (Components[i] as TCombobox).Items[ (Components[i] as TCombobox).itemIndex];

hoika 28. Jan 2010 09:03

Re: Combobox in eine Ini einlesen
 
Hallo,

aha, wo steht denn dieser Code ???
Was funktioniert nicht ?
Warum diese ganzen TypeCasts ? Wenn schon, dann nur einmal wieder in eine lokale Variable (ComboBoxX).

Benutze mal eine lokale Variable zum Auslesen des aktuellen Eintrages.

Delphi-Quellcode:
var
  sSelCBItem: String;
begin
  sSelCBItem:= ComboBox1.Items[ComboBox1.ItemIndex];
  Ini.WriteString ...  sSelCBItem
ItemIndex kann auch -1 sein, dann gibt's bei meinem Code eine Exeption,
also vorher prüfen ...


Heiko

kumar89 28. Jan 2010 09:37

Re: Combobox in eine Ini einlesen
 
Liste der Anhänge anzeigen (Anzahl: 1)
es geht soweit ichs mir vorgestellt hab, blos das 2 zeilen erscheinen die nicht erwünscht sind, ich versteh auch net wieso, warum die 2 zeilen in die ini gespeichert werden.

Mein Quellcode:

Code:
if Components[i] is TCombobox then
          ini.WriteString('Summen'+(Jahr.Text)+(Monat.Text),(Components[i] as TCombobox).name,((Components[i] as TCombobox).text));
Weiß jemand einen Rat?


Siehe Anhang

mfg Kumar89

DeddyH 28. Jan 2010 09:40

Re: Combobox in eine Ini einlesen
 
Und welche Zeilen sind das? Wie sieht Deine Schleife aus? Wir können ja nicht hellsehen.

kumar89 28. Jan 2010 09:50

Re: Combobox in eine Ini einlesen
 
Die Zeilen Jahr und Monat müssten raus mit dem Zahlen in der Ini.

Schleife:

Delphi-Quellcode:
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 TCombobox then
          ini.WriteString('Summen'+(Jahr.Text)+(Monat.Text),(Components[i] as TCombobox).name,((Components[i] as TCombobox).text));
    end;
Danke

DeddyH 28. Jan 2010 09:56

Re: Combobox in eine Ini einlesen
 
Hast Du die Ini mal zwischendurch gelöscht? Vielleicht stammen die Zeilen noch von vorherigen Versuchen.

kumar89 28. Jan 2010 09:59

Re: Combobox in eine Ini einlesen
 
hab mal die ganze Ini gelöscht, aber wird auch immer wieder angezeigt.

mkinzler 28. Jan 2010 10:00

Re: Combobox in eine Ini einlesen
 
Ich würde den Namen vorher in eine loakle Variable übernehmen.
Name := TEdit(Components[i]).Name;
Delphi-Quellcode:
if (name = 'prodLK') or (name = ...

DeddyH 28. Jan 2010 10:04

Re: Combobox in eine Ini einlesen
 
Welche Comboboxen hast Du denn auf dem Formular? Übrigens finde ich es etwas befremdlich, dass Du das Components-Array durchläufst und die Edits dann doch wieder nach ihren Namen ausfilterst. Übrigens prüfst Du in dem Fall noch nicht einmal, ob es auch Edits sind.

kumar89 28. Jan 2010 10:12

Re: Combobox in eine Ini einlesen
 
Zitat:

Zitat von DeddyH
Welche Comboboxen hast Du denn auf dem Formular? Übrigens finde ich es etwas befremdlich, dass Du das Components-Array durchläufst und die Edits dann doch wieder nach ihren Namen ausfilterst. Übrigens prüfst Du in dem Fall noch nicht einmal, ob es auch Edits sind.

Ich verwende normale Comboboxen. Eine für Jahr und eine für Monat.


Zitat:

Zitat von mkinzler
Ich würde den Namen vorher in eine loakle Variable übernehmen.
Name := TEdit(Components[i]).Name;
Delphi-Quellcode:
if (name = 'prodLK') or (name = ...

Würde das meinem eigentlichen Problem weiter helfen?

DeddyH 28. Jan 2010 10:16

Re: Combobox in eine Ini einlesen
 
Zitat:

Zitat von kumar89
Ich verwende normale Comboboxen. Eine für Jahr und eine für Monat.

Und die erzeugen die beiden Zeilen in der Ini. Oder hab ich Dich jetzt völlig falsch verstanden?

kumar89 28. Jan 2010 10:29

Re: Combobox in eine Ini einlesen
 
Zitat:

Zitat von DeddyH
Zitat:

Zitat von kumar89
Ich verwende normale Comboboxen. Eine für Jahr und eine für Monat.

Und die erzeugen die beiden Zeilen in der Ini. Oder hab ich Dich jetzt völlig falsch verstanden?


Code:
 else if Components[i] is TCombobox then
          ini.WriteString('Summen',(Components[i] as TCombobox).name,((Components[i] as TCombobox).text));
    end;

wenn ichs so schreib, dann fehlt es mir in der Summe, daran kann es, dann nicht liegen. Aber die 2 Zeilen stehen noch mit Jahr und Monat in der Ini.

DeddyH 28. Jan 2010 10:31

Re: Combobox in eine Ini einlesen
 
Vielleicht erklärst Du mir besser erst einmal, was genau Du in der Ini speichern willst. Ich bin wohl etwas begriffsstutzig :gruebel:

kumar89 28. Jan 2010 10:39

Re: Combobox in eine Ini einlesen
 
In der Ini, soll folgendes erscheinen unter dem Punkt "Summe" soll einmal des Jahr und einmal der Monat angezeigt werden nur die Zahlen die drin stehen.

Z.b. ich wähl in der Combobox Jahr: 2012 aus und in der Combobox Monat 08 aus soll in der Ini gespeichert werden unter dem Punkt Summe 201208.
Aber was nicht erscheinen soll sind die 2 Zeilen am Ende mit Jahr und Monat die sind nutzlos für meine Ini.

Ich hoffe das man des so versteht. :)

mkinzler 28. Jan 2010 10:41

Re: Combobox in eine Ini einlesen
 
Ich finde es toll, dass du unseren Ernstgemeinten Ratschläge in den Wind schlägst. :zwinker:

DeddyH 28. Jan 2010 10:44

Re: Combobox in eine Ini einlesen
 
Du willst also nur den Sektionsnamen aus den Einträgen der Comboboxen ermitteln?

kumar89 28. Jan 2010 10:48

Re: Combobox in eine Ini einlesen
 
Zitat:

Zitat von DeddyH
Du willst also nur den Sektionsnamen aus den Einträgen der Comboboxen ermitteln?

Jop, genau. Die sollen hinter dem Sektionsname "Summe" stehen und es sollen nicht 2 extra Zeilen dafür erstellt werden.

DeddyH 28. Jan 2010 10:51

Re: Combobox in eine Ini einlesen
 
Ich weiß nicht, ob das funktioniert, da Du ja eigentlich mindestens ein Schlüssel-Wertepaar eintragen sollst. Und selbst, wenn man dafür Leerstrings nimmt, müsste zumindest das Gleichheitszeichen erscheinen. Mir scheint, Du willst TIniFile zweckentfremden.

kumar89 28. Jan 2010 13:28

Re: Combobox in eine Ini einlesen
 
hmm ok danke trotzdem :-D . eine frage hätte ich noch. wenn ich die ini speichere schaut sie so aus z.b:

[Daten2020]
prodlk=
unprodlk=
gehaltserv=
berufsbekl=
anschkostfremd=
personalnk=
kostenserv=
[Summen202005]
Jahr=2020
Monat=05

Wie kann ich denn die ini anders gliedern indem sie so ausschaut:

[Daten2020]
[Summen202005]
Jahr=2020
Monat=2020
prodlk=
unprodlk=
gehaltserv=
berufsbekl=
anschkostfremd=
personalnk=
kostenserv=


Hier mein Quellcode von der ini nochmal:

Delphi-Quellcode:
var Ini: TIniFile;
    i:  Integer;
begin
  ini := TIniFile.Create('C:\Versuch.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 TCombobox then
          ini.WriteString('Summen'+(Jahr.Text)+(Monat.Text),(Components[i] as TCombobox).name,((Components[i] as TCombobox).text));
    end;
  finally
    ini.Free;
  end;
end;
ich habe auch schon probiert den Code zu tauschen das er erst Daten dann Summe abfragt aber ist nicht zum gewünschten ergebnis gekommen.

Hoffe es kann jemand helfen

MFG Kumar89

DeddyH 28. Jan 2010 13:33

Re: Combobox in eine Ini einlesen
 
Kann es sein, dass Du die Funktionsweise einer Ini noch nicht verinnerlicht hast? Wenn ich das richtig sehe, wäre ein anderes Format (z.B. XML) wohl besser für Dein Vorhaben geeignet, da kannst Du auch verschachteln.

kumar89 28. Jan 2010 13:35

Re: Combobox in eine Ini einlesen
 
Würde es aber in der inifile gehen oder klappt das überhaupt nicht?

mkinzler 28. Jan 2010 13:41

Re: Combobox in eine Ini einlesen
 
Nein, wie Detlef dir schon mehrmals versucht hat zu sagen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:26 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-2025 by Thomas Breitkreuz