Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#10

Re: Bitte CODE prüfen - bekomme Immer eine Zugriffsverletzun

  Alt 5. Dez 2008, 13:36
Dein Code hat eine schlechte Qualität.
Hier ein Beispiel für eine Funktion, die gleich mehrere Fehler/Mängel hat:
Delphi-Quellcode:
function DoGetSpeakers : pchar; // warum Pchar ? string ist viel sicherer
var
  IDs : Array[0..1023] of Integer;
  Records : Integer;
  I: integer;
  PlayersInfo : Array[0..1023] of TtsrPlayerInfo; // Unschön und gefährlich: grosse Arrays auf dem Stack (Stacküberlauf droht)
  ID : integer;
begin
  result := '';
  Records := 1024; // unschön, hier wäre Length(PlayersInfo) angebracht
  try
  if not DisplayResult(tsrGetSpeakers(@playersInfo, @records) )
    then exit;
  if Records > 0 then ; // diese Zeile tut nichts. Warum steht sie dann da ?

  for I :=0 to Records-1 do
    ID := PlayersInfo[i].PlayerID ; // Unsinn: ID wird zugewiesen - es wird aber damit nicht gearbeitet

  for i:= 0 to high(Player) do // wenn i > Records-1, dann wird auf uninitialisierten Daten gearbeitet !!! ein ganz böses Foul
    if Player[i].id = Id then
      result := pchar(player[i].Name); // Schleife läuft weiter, obwohl der Player mit der Id gefunden wurde
                                       // fehlt da nicht ein Break ?
  except
    On E:Exception Do
        hLog.AddException(E);
        end; // Einrückung passt nicht
end;
Andreas
  Mit Zitat antworten Zitat