2012-11-07 30 views
0

我還有一個關於Delphi的TList的問題... 當我打印一個不同的TList到控制檯後,我在訪問一個TList時得到了一個EArgumentOutOfRangeException,就像我之前做的一樣。EArgumentOutOfRangeException雖然沒有什麼改變TList

拷貝&粘貼了以下原碼 - 沒有改變單行

Writeln('c: '+inttostr(closed.Capacity)+' |l. 281'); 
    for i := 0 to open.Capacity-1 do 
    begin 
    Writeln('open: ' + open[i].startpunkt + open[i].endpunkt + 
     IntToStr(open[i].kantenbewertung)); 
    end; 
    Writeln('c: '+inttostr(closed.Capacity)); 
    Writeln('closed.capacity: '+inttostr(closed.Capacity)); 
    for i := 0 to closed.Capacity-1 do begin 
    Writeln('closed: ' + closed[i].startpunkt + closed[i].endpunkt + 
     IntToStr(closed[i].kantenbewertung)); 
    end; 

Writeln('c: '+inttostr(closed.Capacity)+' |l. 281');顯然打印到控制檯時,for i := 0 to open.Capacity-1 do begin -loop爲好。

控制檯輸出爲: c:2 | l。 281 開:AC3 開:BC4 開:CD6 - 再有就是錯誤味精

應該是Dijkstra的ALG的實現的一部分。如果這有幫助。

有沒有人發現我沒有的錯誤?或者這是一個奇怪的特例?

回答

3

Capacity與實際的Count不一樣(也可能更大)。

+0

是的,太明顯了。抱歉。 將其更改爲: 'Writeln('c:'+ inttostr(closed.Capacity)+'| l。281'); 對於i:= 0至open.Count-1千萬 開始 Writeln( '開放:' +開放[I] .startpunkt +開放[I] .endpunkt + IntToStr(打開[I] .kantenbewertung)); 結束; Writeln('c:'+ inttostr(closed.Count)); Writeln('closed.capacity:'+ inttostr(closed.Capacity)); (關閉:'+關閉[i] .startpunkt +關閉[i] .endpunkt + IntToStr(closed [i] .kantenbewertung)); end;' –