AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Unter welchen Umständen kann diese Funktion eine AV auslösen
Thema durchsuchen
Ansicht
Themen-Optionen

Unter welchen Umständen kann diese Funktion eine AV auslösen

Ein Thema von Pseudemys Nelsoni · begonnen am 28. Jul 2005 · letzter Beitrag vom 28. Jul 2005
Antwort Antwort
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

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

Unter welchen Umständen kann diese Funktion eine AV auslösen

  Alt 28. Jul 2005, 18:33
Siehe Topic.

Hier die Funktion:

Delphi-Quellcode:
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;
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?

[edit=Luckie]Zitat-Tags durch Delphi-Tags ersetzt. Mfg, Luckie[/edit]

Edit: Danke, wollts gerade auch machen
Mario
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Unter welchen Umständen kann diese Funktion eine AV ausl

  Alt 28. Jul 2005, 18:39
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;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

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

Re: Unter welchen Umständen kann diese Funktion eine AV ausl

  Alt 28. Jul 2005, 18:43
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.
Mario
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Unter welchen Umständen kann diese Funktion eine AV ausl

  Alt 28. Jul 2005, 18:47
Zitat von Pseudemys Nelsoni:
Danke, habs nun drinnen, hatte es draussen gelassen, da ich denke, das jeder User gleichschnell gefunden werden sollte

Gleichberechtigung für alle oder nennt sich das 'demokratisches Programmieren'?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Unter welchen Umständen kann diese Funktion eine AV ausl

  Alt 28. Jul 2005, 19:37
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).
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

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

Re: Unter welchen Umständen kann diese Funktion eine AV ausl

  Alt 28. Jul 2005, 19:57
Genau so nennt es sich, Luckie

@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.
Mario
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Unter welchen Umständen kann diese Funktion eine AV ausl

  Alt 28. Jul 2005, 20:02
Zitat von Pseudemys Nelsoni:
"FUserList.Items[I]" kann nicht nil sein, da die Schleife sonst nicht ausgeführt werden würde.
Stimmt, da würde es vorher schon crashen. Ein Abfrage vor der Schleife
if Assigned(FUserLsit) then wäre bestimmt sinnvoll.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Unter welchen Umständen kann diese Funktion eine AV ausl

  Alt 28. Jul 2005, 20:05
Zitat von Pseudemys Nelsoni:
Genau so nennt es sich, Luckie

@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.
Wie kommst Du da drauf?

Wenn FUserlist nil ist hast deine erste AV, weil Du da ja schon auf das Porperty Count zugreifst.
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
Benutzerbild von derpepe
derpepe

Registriert seit: 16. Mär 2005
Ort: Dotternhausen
164 Beiträge
 
Delphi 2005 Personal
 
#9

Re: Unter welchen Umständen kann diese Funktion eine AV ausl

  Alt 28. Jul 2005, 20:13
Zitat von Pseudemys Nelsoni:
Genau so nennt es sich, Luckie
Man braucht ja auch Raum für spätere Optimierungen!
Peter J. Schneider
http://raketenwerfer.de/programmieren/delphi/index.html
Nes dar in da kev, sed un est a log!
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

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

Re: Unter welchen Umständen kann diese Funktion eine AV ausl

  Alt 28. Jul 2005, 20:17
@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.
Mario
  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 00:01 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