2016-06-22 17 views
0

Delphi XE7 Audit zeigt mir ein Fehler 'Array-Index außerhalb des zulässigen Bereichs' hier:Delphi XE7 Audit Fehler 'Array-Index außerhalb des Bereichs'

for i := 0 to High(Hazards) do begin 
    if Hazards[i].Ident = 123 then begin 
    HazardId := i; 
    Break; 
    end; 
end; 

Was ist das Problem?

Hazards ein dynamisches Array

+0

@MartynA, Compiler übersetzt 'High (dynarr)' zu 'Lenght (dynarr) - 1', es ist ein bisschen * haarig *,' 0' anstelle von 'Low' zu haben, aber es hat keinen Effekt. –

+1

Zeigen Sie bitte den vollständigen Code, der reproduziert werden kann (http://stackoverflow.com/help/mcve) – MBo

Antwort

3

Unter der Annahme, dass i ist eine vorzeichenbehaftete Art und dass Hazards ist ein dynamisches Array ist, dann ist der Code korrekt und die Prüfung falsch ist. Ein Array hat Grenzen low() zu high() und ersteres ist immer Null für ein dynamisches Array.

Wenn meine Annahmen gültig sind, sollten Sie einen Fehlerbericht einreichen. Ich bin nicht bereit, einen Fehler mit absoluter Sicherheit zu behaupten, da Sie keine vollständige Reproduktion gezeigt haben.