Thema: Delphi Probleme mit ComboBox

Einzelnen Beitrag anzeigen

Drahcir

Registriert seit: 13. Jun 2012
34 Beiträge
 
Delphi 6 Personal
 
#5

AW: Probleme mit ComboBox

  Alt 13. Jun 2012, 20:35
Ich hau hier mal den ganzen Quellcode rein, auch wenn meine Bezeichnungen etwas konfus sind sollte man halbwegs verstehen worum es geht

Das mit dem debuggen peil ich nicht so ganz, damit muss ich mich auch nochmal ausführlicher Befassen, sry

Aber schön, das in diesem Teil des Codes schonmal kein Fehler vorliegt, da bin ich schon ein wenig erleichter

Ich hoffe das der vollständige Code mehr Licht ins Dunkel bringen kann und schonmal vielen Dank für die Mühe und Zeit

Delphi-Quellcode:
unit mSpielerDB;

interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IniFiles, mLogAnzeige, Grids, ComCtrls, Calendar,
  ValEdit, StrUtils;

type
  TfrmMain = class(TForm)
    btSpielersuche: TButton;
    cbSpieler: TComboBox;
    btMehrInformationen: TButton;
    lbweitereInfos: TLabel;
    cbLogIns: TComboBox;
    lbAktualisierung: TLabel;
    Memo1: TMemo;
    procedure btSpielersucheClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure btMehrInformationenClick(Sender: TObject);
  private
    ini: TIniFile;
    filename: String;
    hLogFenster : TfrmLogAnzeige;
    zDatum : string;
  public
    { Public-Deklarationen }
  end;

var
  frmMain: TfrmMain;

implementation {$R *.dfm}

procedure TfrmMain.FormCreate(Sender: TObject);
var SpielerlisteIni : TIniFile;
    Spielerliste : String;
    I : Integer;
begin
{***** Auslesen einer Spieler.ini, Eintrag der möglichen Spieler in eine Combobox}

  Spielerliste := ExtractFilePath(ParamStr(0)) + 'Spieler.ini';
  SpielerlisteIni := TIniFile.Create(Spielerliste);

  SpielerlisteIni.ReadSection('Spieler', cbSpieler.Items);
  SpielerlisteIni.Free;

{***** Anlegen des Log-Formulars mit Textanzeige *****}
//Achtung: Nach dem Create wird das OpenDialog geöffnet!!!

  hLogFenster := TfrmLoganzeige.Create(frmMain);
  hLogFenster.Show;
end;

procedure TfrmMain.btSpielersucheClick(Sender: TObject);
var SpielerlisteIni : TIniFile;
    Spielerliste : String;
    I : Integer;
begin
  btSpielersuche.Enabled := false;
  cbSpieler.Enabled := false;
  Caption := 'Suche: ' + cbSpieler.Text;

{**** Eventuelles Schreiben eines neuen Charakters in die Spieler.ini}
  Spielerliste := ExtractFilePath(ParamStr(0)) + 'Spieler.ini';
  SpielerlisteIni := TIniFile.Create(Spielerliste);

  SpielerlisteIni.WriteString('Spieler', cbSpieler.Text, '');
  SpielerlisteIni.Free;

{**** Auslesen oder anlegen einer Spielerdatei mit Eintragen des Änderungsdatum}
  If Trim(cbSpieler.Text) <> ''
  Then begin
    filename := ExtractFilePath(ParamStr(0)) + Trim(cbSpieler.Text) + '.ini';
    ini := TIniFile.Create(filename);

    ini.WriteString('Letzte Änderung', 'Datum', DateToStr(Now));
    ini.Free; // freigeben der Spielerspezifischen .ini Datei
  end;
end;

procedure TfrmMain.btMehrInformationenClick(Sender: TObject);
var I, Zeile : Integer;
    Ein, Datum, Uhrzeit, Koordinaten : string;
begin

//Öffnen der Spielerdatei
  filename := ExtractFilePath(ParamStr(0)) + Trim(cbSpieler.Text) + '.ini';
  ini := TIniFile.Create(filename);

  for Zeile := 0 to hLogFenster.getAnzahl-1 do begin
    ein := hLogFenster.getZeile(Zeile);

    if pos(cbSpieler.Text, Ein) <> 0
    then
      if pos('logged in with entity id', ein) <> 0
      then begin
        for I := 12 to 19 do Uhrzeit := Uhrzeit + ein[I];
        Datum := leftStr(Ein,10);

        Koordinaten := copy(Ein, pos('(',Ein)+1,200);
        Delete(Koordinaten,pos(')',Koordinaten),1);

        cbLogins.Items.Add(Datum);
   // Memo1.Lines.Add(Datum);

        Uhrzeit := '';

      end; // ende von if pos() <> 0
  end; // ende der for Zeile := 0 to hLog...

// Auslesen der Datei
  lbAktualisierung.Caption := 'Aktualisiert: ' + ini.ReadString('Letzte Änderung', 'Datum', 'Fehler beim Auslesen!');
  ini.ReadSectionValues('Logins', cbLogins.Items); //Auslesen des Datums

// Freigeben der Datei
  ini.Free;
end;

end.
und hier noch mein mLoganzeige was ab und an genutzt wird ...

Delphi-Quellcode:
unit mLogAnzeige;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TfrmLogAnzeige = class(TForm)
    MemoLogAnzeige: TMemo;
    OpenDialog1: TOpenDialog;
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    function getAnzahl: Integer;
    function getZeile(nr : Integer): String;
    procedure Loeschen;
    procedure schreibeZeile(s : String);
  end;

var
  frmLogAnzeige: TfrmLogAnzeige;

implementation {$R *.dfm}

function TfrmLogAnzeige.getAnzahl: Integer;
begin
  getAnzahl := MemoLogAnzeige.Lines.Count
end;

function TfrmLogAnzeige.getZeile(nr : Integer): String;
begin
  getZeile := MemoLogAnzeige.Lines[nr];
end;

procedure TfrmLogAnzeige.Loeschen;
begin
  MemoLogAnzeige.Lines.Clear;
end;

procedure TfrmLogAnzeige.schreibeZeile(s : String);
begin
  MemoLogAnzeige.Lines.Add(s)
end;

procedure TfrmLogAnzeige.FormCreate(Sender: TObject);
begin
  if OpenDialog1.Execute
  then memoLoganzeige.Lines.LoadFromFile(Opendialog1.FileName);
end;

end.
und damit du es ganz genau weißt:

Delphi-Quellcode:
object cbLogIns: TComboBox
    Left = 8
    Top = 120
    Width = 305
    Height = 26
    DropDownCount = 90000
    ItemHeight = 18
    TabOrder = 3
    Text = 'Datum der Logins anzeigen und auswählen'
  end
//EDIT: Das Programm läuft ja einwandfrei durch, keine Fehler und gar nichts, die Daten werden auch in der Variable Datum gespeichert, wieso die dann nicht angezeigt werden ist meine Frage
Es gibt nur 10 Arten von Menschen - die die Binärzahlen lesen können und den Rest

Geändert von Drahcir (13. Jun 2012 um 20:49 Uhr)
  Mit Zitat antworten Zitat