![]() |
Unter welchen Umständen kann diese Funktion eine AV auslösen
Siehe Topic.
Hier die Funktion:
Delphi-Quellcode:
Ich bekomme hier manchmal eine AV, weiss nur nicht woran das liegt. In FUserList sind, wenn vorhanden, NUR Objekte der Klasse TUser enthalten. Theoretisch dürfte hier doch kein Fehler auftreten oder?
function TUsers.UserByNickname(const Nickname: string): TUser;
var I: Integer; begin Result := nil; for I := FUserList.Count-1 downto 0 do if CompareText(TUser(FUserList.Items[I]).FNickname, Nickname) = 0 then Result := TUser(FUserList.Items[I]); end; [edit=Luckie]Zitat-Tags durch Delphi-Tags ersetzt. :roll: Mfg, Luckie[/edit] Edit: Danke, wollts gerade auch machen :thumb: |
Re: Unter welchen Umständen kann diese Funktion eine AV ausl
ich sehe da nichts. Aber warum machst du weiter, wenn du den User mit den passenden Nicknamen gefunden hast?
Delphi-Quellcode:
function TUsers.UserByNickname(const Nickname: string): TUser;
var I: Integer; begin Result := nil; for I := FUserList.Count-1 downto 0 do begin if CompareText(TUser(FUserList.Items[I]).FNickname, Nickname) = 0 then begin Result := TUser(FUserList.Items[I]); break; // <== !!! end; end; end; |
Re: Unter welchen Umständen kann diese Funktion eine AV ausl
Danke, habs nun drinnen, hatte es draussen gelassen, da ich denke, das jeder User gleichschnell gefunden werden sollte, anstatt das der letzte User am schnellsten und dementsprechend der erste User am langsamsten gefunden wird.
|
Re: Unter welchen Umständen kann diese Funktion eine AV ausl
Zitat:
Gleichberechtigung für alle oder nennt sich das 'demokratisches Programmieren'? :mrgreen: |
Re: Unter welchen Umständen kann diese Funktion eine AV ausl
das ganze kann zu einer AV führen wenn FUserList.Items[I] nicht vom Typ TUser ist oder eben nil.
Es kann allerdings auch sein das du an einer ganz anderen stelle im programm speicher überschreibst und sich das erst an dieser stelle auswirkt. desweiteren kann FUserList auch nil sein bzw. schon zerstört (mit Free). |
Re: Unter welchen Umständen kann diese Funktion eine AV ausl
Genau so nennt es sich, Luckie :-D
@SirThornberry: Wie gesagt, ich adde dort 100% nur Objekte der Klasse TUser und "FUserList.Items[I]" kann nicht nil sein, da die Schleife sonst nicht ausgeführt werden würde. |
Re: Unter welchen Umständen kann diese Funktion eine AV ausl
Zitat:
Delphi-Quellcode:
wäre bestimmt sinnvoll.
if Assigned(FUserLsit) then
|
Re: Unter welchen Umständen kann diese Funktion eine AV ausl
Zitat:
Wenn FUserlist nil ist hast deine erste AV, weil Du da ja schon auf das Porperty Count zugreifst. |
Re: Unter welchen Umständen kann diese Funktion eine AV ausl
Zitat:
|
Re: Unter welchen Umständen kann diese Funktion eine AV ausl
@Luckie: Das Objekt "FUserList" ist die ganze "Lebenszeit" des Programms verfügbar, d.h ich rufe Create und auch Destroy in der Hauptklasse auf. Also FUserList ist auf jedenfall existent. Theoretisch dürfte es also keine Probleme machen oder?
MfG und danke für die Antworten. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz