AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Fehlermeldung "List Index Out Of Bounds (1)"?
Thema durchsuchen
Ansicht
Themen-Optionen

Fehlermeldung "List Index Out Of Bounds (1)"?

Ein Thema von hircusmutzus · begonnen am 3. Aug 2003 · letzter Beitrag vom 3. Aug 2003
Antwort Antwort
hircusmutzus
(Gast)

n/a Beiträge
 
#1

Fehlermeldung "List Index Out Of Bounds (1)"?

  Alt 3. Aug 2003, 12:17
Hi,
ich hätte da mal eine kurze Frage: Bei meinem Chat werden alle aktiven User die mit dem Server verbunden sind in eine ListBox geschrieben:

Delphi-Quellcode:
procedure TForm1.ServerSocket2ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  ListBox1.Items.Add(Socket.RemoteHost + ' (' + Socket.RemoteAddress + ')');
end;
Sobald ein Client die Verbindung trennt, soll er natürlich wieder gelöscht werden...

Delphi-Quellcode:
procedure TForm1.ServerSocket2ClientDisconnect(Sender: TObject;
  Socket: TCustomWinSocket);
var text: string;
    iFor: Integer;
begin
  text:=Socket.RemoteHost + ' (' + Socket.RemoteAddress + ')';

  for iFor := 0 to ListBox1.Items.Count -1 do
    begin
    if ListBox1.Items.Strings[iFor] = text then
      ListBox1.Items.Delete(iFor);
  end;[/B]
end;
Aber immer wenn mehr als ein Client mit dem Server verbunden ist und dieser die Verbindung Trennt, gibt mir der Server die Fehlermeldung "List Index Out Of Bounds (1)"!
Was habe ich denn falsch gemacht???

Gibt es eigentlich generell die Möglichkeit alle Fehlermeldungen eines Programms zu unterdrücken? Ich weis das ist natürlich nicht empfehlenswert, aber ich wüsste es gerne mal!

MfG Matthias Volland
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#2

Re: Fehlermeldung "List Index Out Of Bounds (1)"?

  Alt 3. Aug 2003, 12:20
Du musst Deine for-Schleife rückwärts durchlaufen

Code:
[color=#ff0000]for iFor := ListBox1.Items.Count -1 downto 0 do[/color]
    begin
    if ListBox1.Items.Strings[iFor] = text then
      ListBox1.Items.Delete(iFor);
  end;
......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Fehlermeldung "List Index Out Of Bounds (1)"?

  Alt 3. Aug 2003, 12:22
Moin Matthias,

lass' die Schleife mal rückwärts laufen, also

for iFor := ListBox1.Items.Count -1 downto 0 do Sobald ein Eintrag gelöscht wurde, ist ListBox1.Items.Count in der For-Anweisung grösser als die tatsächliche Anzahl, da die Grenzen der For Schleife nur zu Beginn der Schleife ausgelesen werden.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
hircusmutzus
(Gast)

n/a Beiträge
 
#4

Re: Fehlermeldung "List Index Out Of Bounds (1)"?

  Alt 3. Aug 2003, 12:27
Hi,
danke das klappt wunderbar!!!

MfG Matthias Volland
  Mit Zitat antworten Zitat
mr2

Registriert seit: 3. Mai 2003
140 Beiträge
 
Delphi 2006 Enterprise
 
#5

Re: Fehlermeldung "List Index Out Of Bounds (1)"?

  Alt 3. Aug 2003, 16:30
um alle Fehlermeldungen zu unterdrücken gibt es zwei Wege:

entweder kritische Anweisung mit try except end umschließen:
Delphi-Quellcode:
try
  DB.Connected := True;
except
  // falls Fehler bei Verbindung mit der DB
  {raise;}
end;
-> sollte nur in seltenen Ausnahmefällen verwendet werden, sonst immer mit raise die Exception weiterreichen

oder:
Delphi-Quellcode:
  TForm1 = class(TForm)
    ...
    procedure FormCreate(Sender: TObject);
  private
    procedure HideExceptions(Sender: TObject; E: Exception);
  end;

implementation

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnException := HideExceptions;
end;

procedure TForm1.HideExceptions(Sender: TObject; E: Exception);
begin
  // hier Unterscheidung der Exceptions durchführen
end;
-> dann werden programmweit alle nicht mittels try except end abgefangenen Exceptions ebenfalls geschluckt

->> sinnvollerweise sollte sowohl in try except end als auch in Application.OnException eine Unterscheidung der verschiedenen Exceptions vorgenommen werden und daraus eine sinnvolle Meldung für den User generiert werden
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#6

Re: Fehlermeldung "List Index Out Of Bounds (1)"?

  Alt 3. Aug 2003, 16:33
Darf ich mal fragen, was das mit obigen Problem zu tun hat? Das würde rein gar nicht helfen!

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#7

Re: Fehlermeldung "List Index Out Of Bounds (1)"?

  Alt 3. Aug 2003, 17:09
mit dem thema zwar nicht, aber die frage (siehe ersten Post) wurde gestellt
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#8

Re: Fehlermeldung "List Index Out Of Bounds (1)"?

  Alt 3. Aug 2003, 17:18
Damit will ich mich dann mal entschuldigen. Den Teil habe ich % überlesen. Sorry.

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Antwort Antwort


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 21:19 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