![]() |
Anfänger kommt nicht weiter...
Hallo,
kann mir jemand sagen wie ich aus der ini einen Wert lese, denn ich zuvor mit einer Combobox eingetragen habe?? Code: schreiben ... IniFile.WriteString ('Aktien',ComboBox1.Text,Edit2.Text); ... lesen ... Label31.Caption := IniFile.ReadString'Aktien',ComboBox1.Text,Edit2.Te xt); ... Vielen Dank Anfänger |
Bis auf die fehlende Klammer nach readstring ist doch alles ok. Was geht den nicht?
Wolfgang |
Sorry, die Klammer ist aber da.
Ich weiß nicht warum das nicht geht :?: Liegt es daran das man mit der Combobox verschiedene Strings auswählen kann? z.B. Telekom oder BASF oder Bank24 Gruß Anfänger |
Hallo Anfänger,
die Syntax ist nicht korrekt. Außerdem musst du vor Benutzung einer Ini-Datei ein TIniFile Objekt erstellen:
Code:
WriteIni benötigt dann die Sektion, in die geschrieben werden soll, sowie den String. Einen Sektionsnamen hast du vergeben (Aktien) aber
IniFile := TIniFile.Create('C:\Test.Ini');
Zitat:
Was genau willst du denn schreiben? ComboBox1.Text oder Edit2.Text oder beide Werte durch ein Komma getrennt oder beide Werte einfach aneinandergehängt? Beim Lesen übergibst du 3 Parameter: Die Sektion, aus der gelesen werden soll, die Zeile aus der entsprechenden Sektion (Teil vor dem = Zeichen) und ein default-Wert, der benutzt werden soll, wenn die Sektion oder der Wert nicht existiert. Willst du Edit2.Text als Standardwert erhalten? |
Hallo Moderator,
mein jetziger Code:
Code:
Aktien ist die Sektion, aus der ComboBox soll der Name gelesen werde
procedure TForm1.schreibe_ini;
var IniFile : TIniFile; begin try IniFile:=TIniFile.create(ExtractFilePath(Paramstr(0))+'daten.dat'); IniFile.WriteString ('Aktien',ComboBox1.Text,Edit2.Text); finally IniFile.Free; end; end; (s.o.) und aus Edit2 wird eine Nummer gelesen zum Schluß soll stehn: [Aktien] Telekom=555750 das funzt ja auch soweit. Nur beim Einlesen sehe ich noch nicht durch. Ich möchte gern das Telkom in ein Label geschreiben wird. Und geht nicht.
Code:
procedure TForm1.lese_ini;
var IniFile : TIniFile; begin IniUpdate := true; IniFile := TIniFile.create(ExtractFilePath(Paramstr(0))+'daten.dat'); Label31.Caption := IniFile.ReadString('Aktien',ComboBox1.Text,Label31.Caption); IniUpdate := false; IniFile.Free end; Danke schon mal im vorraus Anfänger [edit=Admin]Code-Tags eingefügt.[/edit] |
Hallo,
so wie ich das sehe sollte dein Code eigentlich funktionieren. Das lesen der Telekom Aktie aus der Ini funktioniert in deinem Beispiel eben nur wenn in ComboBox1 auch die "Telekom" gewählt ist. Außerdem schreibst du im Moment den Telkom Wert in das Label. Wie wäre es damit:
Code:
Gib mal noch ein paar Hinweise was genau nicht geht, und wie es später aussehen soll.
Label31.caption := Combobox1.text +': '+ Inifile.ReadStrring ('Aktien',ComboBox1.Text,Label31.Caption);
Mfg Salomon |
Hi, klar doch.
Also das ganze sool halt so gehen. Ich wähle mit der ComboBox ein Name. zB. Telekom Dadurch wird das Edit2 aktiviert und der Wert 555750 wird angezeigt. Wenn ich dann z.B. BASF auswähle ändert sich auch Edit2 in Wert 123456 Jetzt speichern. (so wie oben beschrieben, das klapt auch) :) Der Eintrag in der ini sieht dann so aus. [Aktien] Telekom=555750 Der nächste Eintrag mit BASF sieht dann so aus. [Aktien] Telekom=555750 Basf=123456 Jetzt möchte ich auslesen, und das funzt nicht. Das Label zeigt statt den Namen dann die Zahl an 555750. Ich hoffe ich konnte es gut beschreiben. :coder: Danke Anfänger |
Moin Anfänger,
Auslesen heisst ja auch, dass Du den Wert (555750) des Eintrags (Telekom) ausliest. So wie ich Deine Programmlogik verstanden habe, müsste schlicht ein
Code:
genügen.
Label31.Caption := ComboBox1.Text;
|
Das ist klar: Eine Inidatei ist so aufgebaut
[Sektion] Key=Value Gelesen wird immer der value, spezifiziert dur die Sektion unfd den Key |
Eigentlcih ist es richtig sonst gehe erst mal Schritt für Schritt vor.
Ersetze erst mal in dem Ini.Read... Combobox1.... durch 'Telekom' und dann Lable31.Caption durch '', dann dürfte auf jeden Fall gehen, wenn nicht liegt es an einem anderen Code. Wenn es jedoch funzt kannst du es ja Schrittweise wieder richtig einfügen. Kommt denn ein Fehler oder kommt nur nicht der richtige Wert heraus? |
HI, vielen Dank für die Hinweise. Danke :hello:
Wenn ich das von "wwerner" richtig verstanden habe, dann kann ich Telekom garnicht auslesen. [Sektion] Key=Value Zitat: Gelesen wird immer der value, spezifiziert durch die Sektion und den Key [Aktien] Telekom=555750 Oder gibt es eine andere Möglichkeit, außer die ini zu ändern? Danke Anfänger |
Was willst du den jetzt auslesen, den Namen oder den Wert, oder beides?
Schau dir nochmal mein Codebeispiel weiter oben an. Damit kannst du in deinem Label den jeweiligen Firmennamen mit ihrem Wert aus der INI anzeigen. |
Schau dir mal in der Hilfe ReadSection und ReadSections an
Gruß Wolfgang |
Hi,
ich möchte nur den Namen. Denn Rest brauch ich nicht. Bitte mit Codebeispiel Danke |
Hä, dass versteh ich nicht, du hast doch TElekom in deiner Combobox stehen. Also scuhst du ja nciht nach Telekom sondern nach dem Wert, oderhabe ich da was falsch verstanden?
|
Hi Anfänger,
irgendwie habe ich das gefühl, das du deine Programmlogik nochmal überdenken solltest. Wie es aussieht hat noch keiner verstanden was du machen willst :lol: |
Ne, eben nicht. <- beziet sich auf die Frage von alexander.
In der Combobox steht kein fester Wert. Ich wähle damit aus, ob Telkom oder BASF.... Mit der Combox1 wähle ich Telekom und Edit2 wird 555750 zugewiesen Combobox1 = Telekom Edit2 = 555750 wenn ich jetzt speichere, sind die Felder leer und die ini sieht so aus. [Aktien] Telekom=555750 ist o.k. so. jetzt wähle ich aus der Combobox1 ein anderen Eintrag z. B. BASF Combobox1 = BASF Edit2 = 123456 wenn ich jetzt speicher, sind die Felder leer und die ini sieht so aus. [Aktien] Telekom=555750 Basf=123456 ist so in Ordnung. Was ich möchte ist, das wenn das neu Programm gestartet wird das der Name Telekom dem Label32 und Basf dem Label33 zugewiesen wird. Ich möchte nur die beiden Namen auslesen. Später im Programm können es mehr werden. Jetzt sind es aber nur die beiden erstmal. Gruß Anfänger |
Zitat:
Ne, eben nicht. bezog sich auf alexander. In der Combobox steht nicht drin. Ich wähle nur damit aus. Gruß |
Also "Telekom" oder "BASF" kannst du eigentlich nicht auslesen, sie dienen zur Identifiezierung eines Schlüssles. du bekommst dann den Value zurück, in deinem Fall also "555750" für "Telekom" (sollen das Wertpapierkennummern sein oder so?). Wenn die Nummern fest sind kannst du den Namen (also "Telekom" usw.) doch unter der Nummer speichern und auslesen, oder verstehe ich dein Problem nicht ganz richtig? Du mußt ja irgendetwas haben, über das du auf den Eintrag in der INI-Datei zugreifst. :witch:
|
Hi, richtig.
Das sind die Kennnummern. Danke für die doch so simple Idee die Werte in der ini zu tauschen. Das werde ich gleich mal versuchen... Vielen Dank an alle die mitgeholfen haben. Anfänger |
also wahrscheinlich habe ich es jetzt verstanden, du der Schlüssel ist am Anfang immer Telekom. Nun denn mach doch einfach ReadSting('Aktien', 'Telekom', 'das_was_als_standard_gesetzt_werden_soll')
Oder habe ich noch was nicht verstanden. Ach übrigens du kannst sehr wohl die Schlüsselnamen auslesen. Kcuk dir mal die Funktionen ReadSection und ReadSections an! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:06 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