Einzelnen Beitrag anzeigen

shmia

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

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

  Alt 5. Dez 2008, 16:12
for i:= 0 to high(Player) do // Record wurde ja auf 1024 begrenzt, bzw werden wohl nicht mehr als 1024 player online sein oder dürfen laut TS? der Aufruf von tsrGetSpeakers(@playersInfo, @records) bewirkt, dass
das Array playersInfo befüllt wird und die Anzahl der Einträge wird in "records" abgelegt
Also darf eine Schleife doch immer nur von 0 bis records-1 laufen.
Niemals darf die Schleife über das gesamte reservierte Array laufen!!
playersInfo[0] bis playersInfo[records-1] enthalten gültige Daten.
playersInfo[records] bis playersInfo[1024] enthalten ungültige Daten.
Delphi-Quellcode:
if Player[i].id = Id then
      result := pchar(player[i].Name);
//Die Schleife läuft weiter weil ja mehrere Sprechen können, und ich mich der sich auch af dem channel befindet nicht angezeigt haben möchte, sprich ich und noch jemand sprechen gleichzeitig, dann brauche ich nur seine ID und nicht meine
Das macht so alles keinen Sinn, weil der Zeiger "Result" ständig neu überschrieben wird.
Wenn ich nur einen Sprecher suchen möchte, dann kann die Schleife mit "break" doch beendet werden.
Wenn ich mehrere Sprecher haben möchte, dann geht das nicht mit PCHAR.

Hier ein Beispiel, das Sinn machen würde:
Delphi-Quellcode:
// wichtig in diesem Beispiel ist, dass Result ein String ist
// nur so können alle Sprecher (ausser mir selbst) in einem String zurückkommen
for i:= 0 to records-1 do
begin
  if Player[i].id <> MeineEigeneID then
  begin
    Result := Result + Player[i].Name+ ' | ';
  end;
end;
Andreas
  Mit Zitat antworten Zitat