AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Listenindex überschreitet das Maximum (-1) unter Win2000
Thema durchsuchen
Ansicht
Themen-Optionen

Listenindex überschreitet das Maximum (-1) unter Win2000

Ein Thema von _SolidSnake_ · begonnen am 8. Feb 2006 · letzter Beitrag vom 8. Feb 2006
Antwort Antwort
Seite 1 von 2  1 2      
_SolidSnake_

Registriert seit: 3. Feb 2006
Ort: Pulheim
28 Beiträge
 
Delphi 2005 Architect
 
#1

Listenindex überschreitet das Maximum (-1) unter Win2000

  Alt 8. Feb 2006, 22:34
Hallo zusammen

Ich hab ein Problem mit einer ComboBox und das nur unter Windows 2000 ... ich hab nach vielen Versuchen den Fehler auf eine Zeile einschränken können, aber komm leider nicht weiter, geschweige den Fehler beseitigt

Die ComboBox wird wie folgt gefüllt ...

Delphi-Quellcode:
for i := 0 to mysql_num_rows(_myRes)-1 do
  begin
    _myRow := mysql_fetch_row(_myRes);
    id := _myRow[0]; // Mitarbeiter-ID
    benutzer := _myRow[2] + ',' + _myRow[1]; // Nachname, Vorname
    ComboBox_Benutzer.Items.AddObject(benutzer,TOBject(StrToInt(id)));
  end;
Und an folgender Stelle soll festgestellt werden welcher Mitarbeiter in der Liste ausgewählt wurde und die ID für eine SQL-Abfrage genutzt werden.

Delphi-Quellcode:
id := Integer(ComboBox_Benutzer.Items.Objects[ComboBox_Benutzer.ItemIndex]); // Problemzeile !!!
query := PChar('SELECT passwort FROM mitarbeiter WHERE id=' + IntToStr(id));
Unter Windows Xp funktioniert das auch alles ganz klasse, nur unter Windows 2000 bekomme ich den Fehler "Listenindex überschreitet das Maximum (-1)".

Ersetze ich diese Zeile und setze id := 1 dann kann ich mich zum Beispiel mit dem Passwort des ersten Mitarbeiters ohne Probleme einloggen. Es muss also irgendwie in dieser Zeile stecken.

Wenn jemand schonmal ein ähnliches Problem hatte oder einen Rat weiss, wäre ich dankbar.

Gruß
Micha
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#2

Re: Listenindex überschreitet das Maximum (-1) unter Win2000

  Alt 8. Feb 2006, 22:39


Warum nicht so:

id := ComboBox_Benutzer.ItemIndex;
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
_SolidSnake_

Registriert seit: 3. Feb 2006
Ort: Pulheim
28 Beiträge
 
Delphi 2005 Architect
 
#3

Re: Listenindex überschreitet das Maximum (-1) unter Win2000

  Alt 8. Feb 2006, 22:41
Weil ich die ID des Mitarbeiters benötige und nicht die vom Index. Der Index fängt bei 0 an und geht durch, die Mitarbeiter ID fängt bei 1 an und muss nicht durchgehend sein (kann ja auch nen Mitarbeiter löschen oder sperren).

Gruß
Micha
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Listenindex überschreitet das Maximum (-1) unter Win2000

  Alt 8. Feb 2006, 22:52
Hallo _SolidSnake_,

programmiere sicher.
Das bedeutet in diesem Fall, greife nicht einfach auf ComboBox_Benutzer.ItemIndex zu und übergebe diesen Wert an Object[] sondern prüfe vorher, ob der Wert überhaupt gültig ist.

Also...
Delphi-Quellcode:
if ComboBox_Benutzer.ItemIndex >= 0 then begin
  id := Integer(ComboBox_Benutzer.Items.Objects[ComboBox_Benutzer.ItemIndex]);
  query := PChar('SELECT passwort FROM mitarbeiter WHERE id=' + IntToStr(id));
end;
MfG
Thorsten
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#5

Re: Listenindex überschreitet das Maximum (-1) unter Win2000

  Alt 8. Feb 2006, 23:06
Zitat:
Weil ich die ID des Mitarbeiters benötige und nicht die vom
Das meinte ich zum Debuggen, sorry. Manchmal schreib ich zu wenig...
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
_SolidSnake_

Registriert seit: 3. Feb 2006
Ort: Pulheim
28 Beiträge
 
Delphi 2005 Architect
 
#6

Re: Listenindex überschreitet das Maximum (-1) unter Win2000

  Alt 8. Feb 2006, 23:10
Hallo Thorsten.

Danke für den Tipp Ich hab allerdings schon eine ähnliche Abfrage eingebaut, nur nicht mit angezeigt, weil es eben an dieser einen Zeile liegen muss. Die komplette Prozedur sieht so aus:

Delphi-Quellcode:
procedure TfrmLogin.Button_LoginClick(Sender: TObject);
var
  query: PChar;
  id: Integer;
  passwort: String;
begin
  if Trim(ComboBox_Benutzer.Text) <> 'then
    begin
      if Trim(Edit_Passwort.Text) = 'then
        begin
          MessageDlg('Bitte gültiges Passwort eingeben.', mtInformation, [mbOK], 0);
          ModalResult := mrNone;
        end
      else
        begin
          id := Integer(ComboBox_Benutzer.Items.Objects[ComboBox_Benutzer.ItemIndex]);
          query := PChar('SELECT passwort FROM mitarbeiter WHERE id=' + IntToStr(id));
          mysql_real_query(_myCon, query, Length(query));

          _myRes := mysql_store_result(_myCon);
          if _myRes = nil then
            begin
              ShowMessage('Es konnten keine Datensätze zurückgebenen werden. Ursache: ' + mysql_error(_myCon));
              Exit;
            end;

          _myRow := mysql_fetch_row(_myRes);
          passwort := _myRow[0];

          if Edit_Passwort.Text = passwort then
            LoginOK := True
          else
            begin
              MessageDlg('Falsches Passwort.', mtInformation, [mbOK], 0);
              ModalResult := mrNone;
            end
        end
      end
  else
    begin
      MessageDlg('Bitte einen Benutzer auswählen.', mtInformation, [mbOK], 0);
      ModalResult := mrNone;
    end;
end;
Wie gesagt, unter Windows XP schmeisst er auch keinen Fehler aus, aber unter Windows 2000.
Die ComboBox wird auch ordentlich angezeigt, nur sobald man dann auf "Login" klickt, kommt die Fehlermeldung.

Zur Not werd ich wohl versuchen irgendwas über den ComboBox_Benutzer.ItemIndex oder den ComboBox_Benutzer.Text zu basteln

Gruß
Micha
  Mit Zitat antworten Zitat
_SolidSnake_

Registriert seit: 3. Feb 2006
Ort: Pulheim
28 Beiträge
 
Delphi 2005 Architect
 
#7

Re: Listenindex überschreitet das Maximum (-1) unter Win2000

  Alt 8. Feb 2006, 23:13
Zitat von turboPASCAL:
Zitat:
Weil ich die ID des Mitarbeiters benötige und nicht die vom
Das meinte ich zum Debuggen, sorry. Manchmal schreib ich zu wenig...
Nun kann ich nicht ganz folgen, sorry

Solange arbeite ich noch nicht mit Delphi und arbeite momentan nach dem Prinzip "learning by doing" und eben über google, foren und co.

Gruß
Micha
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Listenindex überschreitet das Maximum (-1) unter Win2000

  Alt 8. Feb 2006, 23:15
Du brauchst nicht auf irgendwelche komischen Tricks zurückgreifen. Wenn du den Style der Combobox verändert hast (auf csDropDownList), dann darfst du nicht mehr auf .Text zugreifen (das geht nicht) nimm doch einfach den Test ItemIndex >= 0 dann hast du kein Probleme.

Verwunderte Grüsse
Thorsten
  Mit Zitat antworten Zitat
_SolidSnake_

Registriert seit: 3. Feb 2006
Ort: Pulheim
28 Beiträge
 
Delphi 2005 Architect
 
#9

Re: Listenindex überschreitet das Maximum (-1) unter Win2000

  Alt 8. Feb 2006, 23:25
Ich hab das nun so eingebaut, aber dann bekomm ich unter Windows 2000 den fehler das ich einen Benutzer auswählen soll, obwohl ich einen ausgewählt habe. Unter Windows XP läuft alles nach wie vor ganz prima.

Gruß
Micha
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#10

Re: Listenindex überschreitet das Maximum (-1) unter Win2000

  Alt 8. Feb 2006, 23:26
Zitat:
Solange arbeite ich noch nicht mit Delphi und arbeite ...
Ist doch kein Problem.

Omata hat ja schon den richtigen Hinweis gegeben. Damit kannst du sicher stellen das überhaupt ein Eintrag in der Listbox existiert. Ich würde mich auch nicht auf das Vordefinieren den Listboxeintrages im OI verlassen. Beim "adden" kann es passieren, das diese Voreinstellung auf -1 zurückgesetzt wird.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  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 05:11 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