Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ausgewählten ( Combobox ) Eintrag als Standart speichern u.. (https://www.delphipraxis.net/5732-ausgewaehlten-combobox-eintrag-als-standart-speichern-u.html)

TimmA 17. Jun 2003 08:21


Ausgewählten ( Combobox ) Eintrag als Standart speichern u..
 
Hallo,

also ich habe auf der ersten Seite meines Programms u.A. eine ComboBox in der verschiedene Benutzer stehen. Jetzt möchte ich, dass wenn ich einmal meinen Benutzername auswähle der so gespeichert wird, damit ich beim nächsten Start des Programms nicht wieder aus der ComboBox auswählen muss sonder das er als "Standart" schon in der ComboBo ausgewählt ist.

Hoff ihr könnt mir helfen (mit der Suchfunktion auf der Seite hier habe ich nichts gefunden), vielen Dank schonmal

RobertS 17. Jun 2003 08:26

Ist eigentlich nicht schwer.
Denkanstoß:
* Fang den Event OnChange ab und schreibe bei jedem Change den ausgewählten Wert in eine INI Datei

Benutz mal die Suchfunktion ->"ini" da dürftest du alles findes was du brauchst um mit INI Dateien zu arbeiten

mfg
Robert

r_kerber 17. Jun 2003 08:31

Ich würde diese Speicherung aber nicht in InChange durchführen. Dann würde ja bei jeder Änderung gespeichert. Besser ist wohl am Programmende (OnDestroy)

TimmA 17. Jun 2003 09:00

Hallo,

bin noch totaler anfgänger und kömmen mit dem Ini abspeichern so garnicht zurecht :oops: . Unter Suchen konnte ich leider keine Einleitung in das Thema finden aber ein paar Codeschnipsel

könnt ihr mir sagen was hier falsch ist ?


Delphi-Quellcode:
procedure TForm4.FormDestroy(Sender: TObject);
var combosave: TIniFile;
begin
combosave := TIniFile.Create(ExtractFilepath(Application.Exename)+'settings.ini');
try
combosave.WriteString('Iconpfad','Status1',ComboBox1.ItemIndex);
finally
combosave.Free;
end;

Christian Seehase 17. Jun 2003 09:20

Moin Timm,

Du bekommst doch bei WriteString die Fehlermeldung

Inkompatible Typen string und integer


Da die Methode WriteString heisst...

Zwei Möglichkeiten
  1. Entweder Du schreibst direkt den gerade in der ComboBox aktiven Namen in die Ini, mit WriteString
  2. Du schreibst den Index des ausgewählten Namens in die Ini mit WriteInteger. Eventuell nicht sinnvoll, wenn sich die Reihenfolge ändern kann.

Luckie 17. Jun 2003 09:24

Eine Fehlerbeschreibung oder was nicht wie gewünscht funktioniert wäre hilfreich. Sieht nämlich so ganz gut aus -so auf den ersten Blick.

TimmA 17. Jun 2003 09:51

Hi,

ich glaube ihr verseht mich ein bisschen falsch :oops: ,

also ich habe am Anfang meines Programms eine Combobox (Combobox1) nun möche ich das es irgendwie in einer ini Datei gespeichert wird. Nur ich habe 0 Ahnung wie das gehen soll und in der Suche hier auf der Seite habe ich nur diesen Codeschnipsel gefunden keine kleine Einleitung oder so, daher weiß ich auch nich was ich damit anfangen kann :( .

Kann mir bitte jemand ein kleines Beispiel schreiben, indem mein ausgewählter Index der Combobox1 in die ini xy.ini abgespeichert wird wenn das nicht zuviel Arbeit ist ? :angle2:

Christian Seehase 17. Jun 2003 09:57

Moin Timm,

Dein gezeigter Codeschnipsel weist halt nur einen kleinen Fehler auf.

Mit WriteString werden Strings geschrieben.
Mit WriteInteger werden Integer geschrieben.

ComboBox.ItemIndex ist ein integer.

TimmA 17. Jun 2003 10:21

Hi,

Ok ich hoffe ich habe is nun verstanden :)

Nur wenn ich Starte kommt :

Undefinierter Bezeichner "TIniFile"

steht aber so wie oben bei mir drin. :oops:

Luckie 17. Jun 2003 10:28

Du hast auch die Unit IniFiles eingebunden? :roll:

Christian Seehase 17. Jun 2003 10:33

Moin Timm,

dazu ein kleiner Exkurs in Sachen "Wo finde ich was, und wie"

Komponenten, Funktionen, Konstanten usw. sind, meist sinnvoll, in einzelnen Units zusammengefasst.
Nicht alle dieser Units werden automatisch unter uses eingebunden (bei einem leeren Formular wird z.B. die Unit StdCtrls automatisch eingebunden, wenn Du z.B. einen Button auf das Formular packst und kompilierst oder speicherst).

Bei allen Kompos, die nicht auf das Formular gelegt werden (z.B. TIniFile), muss man sich ggf. selber darum kümmern, dass die passende Unit zur Verfügung steht.
Die zu finden ist meist auch nicht schwierig, denn in der Hilfe steht bei jeder Kompo oder Funktion, in welcher Unit sie deklariert wird.

In Deinem Falle hiesse das:
Mit dem Cursor auf TIniFile und F1 drücken.

Die Hilfe zeigt Dir dann, dass TIniFile in der Unit IniFiles steht.

Bei den API Funktionen heisst die Unit meist so, wie die Headerdatei (ohne .h) in der die Funktion deklariert wurde)

TimmA 17. Jun 2003 10:34

Zitat:

Zitat von Luckie
Du hast auch die Unit IniFiles eingebunden? :roll:

Nein konnte ich ja nicht wissen :) aber jetzt geht es ! Viele Dank !!!

:dancer: :dancer2:


:D

TimmA 17. Jun 2003 12:30

hallo,

einmal muss ich noch nerven :oops:

Wie kann ich nun den Wert aus der ini auslesen ? über die Suchfunktion finde ich leider keine Beispiele ;(

r_kerber 17. Jun 2003 12:34

Dann schau Dir mal in der OH für TIniFile die Methoden an, die mit Read beginnen.

TimmA 17. Jun 2003 12:37

Zitat:

Zitat von r_kerber
Dann schau Dir mal in der OH für TIniFile die Methoden an, die mit Read beginnen.



"OH" ?

Sorry kann ich nichts mit anfangen :oops:

r_kerber 17. Jun 2003 13:25

OH = Online-Hilfe

Tpercon 17. Jun 2003 13:49

Und da steht dann irgendwo ReadString bzw. ReadInteger! :wink:

Luckie 17. Jun 2003 14:05

Online Help = Online Hilfe. Da wo du landest, wenn du in der Delphi IDE F1 drückst.

TimmA 18. Jun 2003 07:51

Hallo,

die Delphi-Hilfe bringt mich nicht weiter :( .

Hat keiner einen kleinen Codeschnipsel für mich ? :roll:

r_kerber 18. Jun 2003 08:03

Zitat:

Zitat von TimmA
die Delphi-Hilfe bringt mich nicht weiter

Das verstehe ich nicht. Hier Code-Schnipsel, die ich direkt aus der OH kopiert habe. Du mußt den nur auf Deine Belange anpassen:
Delphi-Quellcode:
var

  GameIni: TIniFile;
begin
  Gameini := TIniFile.Create('fungame.ini');
  with GameIni do
  begin
    WriteBool('Options', 'Sound', True);
    WriteInteger('Options', 'Level', 3);
    WriteBool('Configuration', 'ShowToolBar', True);
    Free;
  end;

end;
bzw.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);

var
  MyIniFile: TIniFile;
  begin
  MyIniFile := TIniFile.Create('myapp.ini');
  Memo1.Clear;
  MyIniFile.ReadSectionValues('Transfer', Memo1.Lines);
  if Memo1.Lines.Values['Title1'] <> 'Picture Painter' then
    MyIniFile.WriteString('Transfer', 'Title1', 'Picture Painter');
  MyIniFile.Free;
end;

procedure TForm1.Button2Click(Sender: TObject);

var
  MyIniFile: TIniFile;
  begin

  MyIniFile := TIniFile.Create('myapp.ini');

  { wenn der Eintrag vorher nicht da war, wird er jetzt gelöscht }
  if Memo1.Lines.Values['Title1'] = '' then
    MyIniFile.DeleteKey('Transfer', 'Title1')
  { andernfalls alten Wert wiederherstellen }
  else
    MyIniFile.WriteString('Transfer', 'Title1', Memo1.Lines.Values['Title1']);
  MyIniFile.Free;
end;

Tpercon 18. Jun 2003 08:23

Hier nen Beispiel was aber nicht getestet ist!

Delphi-Quellcode:
procedure TForm4.FormShow(Sender: TObject);
var combosave: TIniFile;
begin
combosave := TIniFile.Create(ExtractFilePath(ParamStr(0))+'settings.ini');
try
 ComboBox1.ItemIndex:=combosave.ReadInteger('Iconpfad','Status1',0);
finally
 combosave.Free;
end;
Sowas ähnliches müßte aber bestimmt in der OH zu finden sein, hab gerade nur kein Delphi zur Hand.


Gruß

TimmA 18. Jun 2003 09:05

Hallo,

also in der Delphihilfe habe ich echt nicht gefunden blicke da nicht durch :( . Danke für die Codeschnipsel ich werde mich gleich mal ransetzen und Testen. DANKE schonmal :D

Luckie 18. Jun 2003 09:09

Zitat:

Zitat von TimmA
also in der Delphihilfe habe ich echt nicht gefunden blicke da nicht durch :( .

Wollen wir unsere Delphi-Versionen tauschen? In diesem Fall reicht dir vollkommen Delphi6 Personal. :roll:

r_kerber 18. Jun 2003 09:34

Zitat:

Zitat von Luckie
Wollen wir unsere Delphi-Versionen tauschen? In diesem Fall reicht dir vollkommen Delphi6 Personal.

:lol: :spin: :lol: :spin:

Mat 18. Jun 2003 10:47

Online-Hilfe :)

TimmA 18. Jun 2003 11:49

Ich habe eben noch das Glück, mich Schüler bzw. Auszubildener nennen zu dürfen und so sehr Preisgünstig an die SSL-Version zu kommen :D .

Stanlay Hanks 18. Jun 2003 11:58

Hallo. Das hier durchlesen. Das isn Tutorial über INI Dateien. Da dürfte sich das meiste von selber klähren :wink:

TimmA 18. Jun 2003 12:09

Zitat:

Zitat von Stanlay Hanks
Hallo. Das hier durchlesen. Das isn Tutorial über INI Dateien. Da dürfte sich das meiste von selber klähren :wink:


Vielen Danke, genau sowas habe ich gesucht :mrgreen: . Danke ! :wink:

Stanlay Hanks 18. Jun 2003 12:14

Zitat:

Zitat von TimmA
Vielen Danke, genau sowas habe ich gesucht :mrgreen: . Danke ! :wink:

Kein Problem. Übrigens sind die Tuts auf der Seite alle nicht schlecht. Kannst ja mal "überfliegen".


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