AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit ComboBox

Ein Thema von Drahcir · begonnen am 13. Jun 2012 · letzter Beitrag vom 14. Jun 2012
Antwort Antwort
Seite 1 von 2  1 2      
Drahcir

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

Probleme mit ComboBox

  Alt 13. Jun 2012, 18:48
Da ich nach langer Suche nichts gefunden habe, möchte ich hier einmal nachfragen.
Ich hoffe ich bin hier richtig

Mein Programm soll einen Text aus einem Memo-Feld Zeile für Zeile auslesen, nach bestimmten Wortblöcken suchen, wenn diese gefunden wurden an Anfang der Zeile die ersten 10 Zeichen auslesen, in die Variable Datum schreiben und diese dann in eine Combobox namens cbLogins eintragen als Items.

Hier mal der Code:

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

  for Zeile := 0 to hLogFenster.getAnzahl-1 do begin //getAnzahl entspricht Memo.lines.count;
    ein := hLogFenster.getZeile(Zeile); // laden der Zeile in var ein;

// eine zu überprüfende Zeile sieht folgend aus ( entspricht nun var ein )
// 2012-04-28 22:12:29 [INFO] Drahcir [/#.###.###.##:#####] logged in with entity id 49095 at (453.375, 64.0, -13.53125)

    if pos('Drahcir', Ein) <> 0 // nach 'Drahcir' soll überprüft werden
    then
      if pos('logged in with entity id', ein) <> 0 // dies soll auch in der zeile stehen
      then begin
        for I := 12 to 19 do Uhrzeit := Uhrzeit + ein[I]; // speichern einer uhrzeit
        Datum := leftStr(Ein,10); // Speichern des Datums

        Koordinaten := copy(Ein, pos( '(' , Ein)+1,200); // Koordinaten werden gespeichert
        Delete(Koordinaten,pos(')',Koordinaten),1); // Klammer am Ende wird entfernt

        cbLogins.Items.Add(Datum); // Laden des "Datums" in combobox
       {Memo1.Lines.Add(Datum);}                              // laden in memo funktioniert!!

        Uhrzeit := ''; //zurücksetzen der Uhrzeit

      end; // ende von if pos() <> 0
  end; // ende der for Zeile := 0 to hLog...
end;
Nun wird (wenn ich im laufenden Programm die Combobox aufklappen lasse) gar nichts mehr angezeigt, auch vorher schon eingetragene Items verschwinden einfach aus der Liste :S

Ich hoffe ihr versteht meine Probleme und könnt mir helfen oder zumindest eine Denkhilfe geben

EDIT: hab die forschleife nach for Zeile := 0 to hLogFenster.getAnzahl-1 do geändert
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 19:12 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: Probleme mit ComboBox

  Alt 13. Jun 2012, 18:56
for Zeile := 0 to hLogFenster.getAnzahl do Das kann schon mal nicht funktionieren. Da der Zeilenindex nullbasierend ist muss es heißen:
for Zeile := 0 to hLogFenster.getAnzahl-1 do
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Drahcir

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

AW: Probleme mit ComboBox

  Alt 13. Jun 2012, 19:02
Vielen Dank für deine Hilfe, damit haben wir ein Problem schonmal beseitigt aber mein genanntes Problem ist noch immer da
Es gibt nur 10 Arten von Menschen - die die Binärzahlen lesen können und den Rest
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.138 Beiträge
 
Delphi 12 Athens
 
#4

AW: Probleme mit ComboBox

  Alt 13. Jun 2012, 19:55
Vielen Dank für deine Hilfe, damit haben wir ein Problem schonmal beseitigt aber mein genanntes Problem ist noch immer da
Da in dem gezeigten Codeschnippsel keinerlei Code enthalten ist, welcher Einträge aus cbLogins löschen könnte
und da irgendwer vergessen hat uns restlichen Code zu zeigen, welcher hier und sonstwo aufgerufen wird.

Also kann dir niemand helfen.



Wie wäre es mit debuggen und schauen wann die Einträge verschwinden, bzw. ob überhaupt jemals welche drin sind?
Wenn diese über Items.Delete gelöscht werden, dann  function GetItemsClass: TCustomComboBoxStringsClass; überschreiben und dort eine eigene Klassenableitung übergeben, welche dich informiert, wenn was gelöscht werden soll.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
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
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#6

AW: Probleme mit ComboBox

  Alt 13. Jun 2012, 21:35
ohne wirklich nachvollziehen zu können was da ablaufen soll, diese Stelle
  ini.ReadSectionValues('Logins', cbLogins.Items); aufgerufen irgendwo nach

cbLogins.Items.Add(Datum); kann es sein dass Du danach suchst ?
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Drahcir

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

AW: Probleme mit ComboBox

  Alt 13. Jun 2012, 21:44
ohne wirklich nachvollziehen zu können was da ablaufen soll, diese Stelle
  ini.ReadSectionValues('Logins', cbLogins.Items); aufgerufen irgendwo nach

cbLogins.Items.Add(Datum); kann es sein dass Du danach suchst ?
natürlich ... vielen vielen Dank, hab nicht gemerkt, das ich da ja auch die Combobox anspreche ...
ich hab wohl nur die ini.xxx gelesen und mir nichts dabei gedacht.

Danke für die schnelle Hilfe trotz laufender EM ...

Nächstes mal kontrollier ich wirklich jede Zeile bevor ich mich hier melde, was sicher noch öfter passiert
Es gibt nur 10 Arten von Menschen - die die Binärzahlen lesen können und den Rest
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

AW: Probleme mit ComboBox

  Alt 13. Jun 2012, 21:47
Dir ist klar, dass du da ziemlich viele Speicherlecks in deinem Code hast?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Drahcir

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

AW: Probleme mit ComboBox

  Alt 13. Jun 2012, 22:16
Das Programm so bisher war nur ne winzig kleine Idee und ich lerne erst seit einem Jahr Pascal und das auch nur Hobbymäßig alle paar Wochen mal^^

Die Idee kam mir heute morgen im Bus und war nur ne Fix-Idee die ich eigentlich nie vor hatte zu Ende zu führen, jetzt aber doch ein wenig Lust daran gewonnen habe. Wenn du mir noch netterweise erklären magst wo ich überall Fehler drinnen habe wär das ganz nett^^
Es gibt nur 10 Arten von Menschen - die die Binärzahlen lesen können und den Rest
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

AW: Probleme mit ComboBox

  Alt 13. Jun 2012, 22:27
Du gibst zum Beispiel die ganzen Ini-Objekte nicht wieder frei.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:42 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