For T := 0 to Theroom.Brugere.Items.Count - 1 Do Begin If Theroom.Brugere.Items[T] = Logon.Brugernavn.Text Then Begin Theroom.Brugere.Items.Delete(T); End; End; Theroom.Brugere.Items.SaveToFile('c:\brugere.txt');
Den efterlader bar en tom plads istedet for at slette item'en!
Jeg er ikke helt sikker, men jeg tror at Theroom.Brugere.Items.Count - 1 bliver evalueret for hvert gennemløb og så er det er *meget* dårlig idé at have noget kode inde i løkken som ændrer på tællerværdien. Prøv istedet at gemme ...Count i en variabel inden du starter løkken, og så bruge denne som tæller.
Hvad er "Brugere" egentlig for en størrelse? Er det en StringList (eller lign.) er der altså en overhængende fare for at du får slettet noget forkert idet index skifter hver gang du sletter et element.
Hvis du laver ovenstående med en flad listbox med f.eks. 10 items i får du en 'List index out of bounds' - i hvert tilfælde på Delphi 5. Grunden er, som tidligere kommenteret, at Delphi kun evaluerer Items.Count een gang og derfor får du et overløb. Hvorfor det bare efterlader en blank må guder vide... Du burde få en 'list index...'
Men hvis ideen er at slette en bruger (går udfra at der ikke eksisterer to ens) kan du bruge
with Theroom.Brugere.Items do Delete(IndexOf(Logon.Brugernavn.Text));
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.