AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Listenindex überschreitet maximum

Ein Thema von ozz · begonnen am 9. Nov 2005 · letzter Beitrag vom 11. Nov 2005
Antwort Antwort
ozz

Registriert seit: 26. Jun 2005
131 Beiträge
 
#1

Listenindex überschreitet maximum

  Alt 9. Nov 2005, 21:55
Hallo zusammen,
das Probelm klingt recht unspektakulär, aber der Fehler steck im Detail

Delphi-Quellcode:
Ich habe einen Typ TDocument
type TDocument = class (TComponent)
private
  ...
  FDocument:TWebBrowser;
  FLinks:TStringlist;
Published
  property Document: TWebBrowser read FDocument write FDocument;
  property links: TStringlist read FLinks;
...
Delphi-Quellcode:
type TClDiS = class (Tcomponent)
private
 ...
 FDocumentlist:TObjectList;
 function Get(Index: Integer): TDocument;
 procedure Put(Index: Integer; const Value: TDocument);
Published
...
 function add(item: TWebbrowser):integer;
 function Count: Integer;
public
 property Document[Index: Integer]: TDocument read Get write Put;
...

function TCldis.Count: Integer;
begin
    result:=FDocumentList.Count;
end;

function TCldis.Get(Index: Integer): TDocument;
begin
    result:=TDocument(FDocumentList[Index]);
end;

procedure TCldis.Put(Index: Integer; const Value: TDocument);
begin
    FDocumentList[Index]:=Value;
end;


Soweit so gut...

Delphi-Quellcode:
procedure TForm1.ActionExtractInitExecute(Sender: TObject);
begin

  Cldis.add(WebBrowser1); // in Liste einfügen
  Cldis.Count;
  Cldis.Document[1].Document;
  ...
end;
Das Problem ersteht, wenn ich Cldis ein Objekt hinzufüge, liefert Cldis.Count die korrekte Anzahl. Greife ich aber über das Array Cldis.Document[1].Document direkt auf eine Element zu, knallt es obwohl count korrekt 1 zurückliefert.

Danke für die Hilfe
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Listenindex überschreitet maximum

  Alt 9. Nov 2005, 21:57
Das erste Element ist [0].

Zitat von Online Hilfe:
Items (Eigenschaft von TObjectList)
Die Eigenschaft Items listet die Objektreferenzen auf.

Delphi-Syntax:

property Items[Index: Integer]: TObject; default;

Beschreibung

Mit Items können Sie auf die Objekte in der Liste zugreifen. Die Eigenschaft ist ein nullbasiertes Array. Auf die erste Komponente kann mit dem Index 0, auf die zweite mit dem Index 1 usw. zugegriffen werden. Zur Navigation in der Liste verwenden Sie Items zusammen mit der Eigenschaft Count.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
ozz

Registriert seit: 26. Jun 2005
131 Beiträge
 
#3

Re: Listenindex überschreitet maximum

  Alt 9. Nov 2005, 22:34
Danke für die Hilfe. Leider ist dies nicht der Fehler. Ich habe im Beispiel nur die falsche Zahl eingetragen (0-basis).
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Listenindex überschreitet maximum

  Alt 9. Nov 2005, 22:40
Na, dann ist WebBrowser1 irgendwie nicht sauber. Entweder nicht initialisiert, oder zwischendurch mal freigegeben...
Ich teste sowas neuerdings mit FastMM, dem geilsten Tool für Delphi. Gips bei Sourceforge. Falls Du das nicht kennst: FastMM ersetzt den Borland Memory Manager und zeigt Dir ziemlich jeden Fehler, denn Du bezüglich Alloziierung, Freigabe, Schreiben in nicht alloziierten Speicher etc. machen kannst.

Fehler Deiner Kajüte findet man eigentlich IMMER, außer, es ist ein Fehler im IE (ich gehe mal davon aus, das der WebBrowser1 eine Instanz davon ist)...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#5

Re: Listenindex überschreitet maximum

  Alt 9. Nov 2005, 22:46
Delphi-Quellcode:
 FDocumentlist:TObjectList;

function TCldis.Count: Integer;
begin
    result:=FDocumentList.Count;
end;

function TCldis.Get(Index: Integer): TDocument;
begin
    result:=TDocument(FDocumentList[Index]);
end;
[/quote]


Soweit so gut...

Delphi-Quellcode:
procedure TForm1.ActionExtractInitExecute(Sender: TObject);
begin

  Cldis.add(WebBrowser1); // in Liste einfügen
  Cldis.Count;
  Cldis.Document[1].Document;
  ...
end;
Nun ja, du greifst in deiner Get funktion auf FDocumentList[Index] zu, ersetz das mal durch TDocument(FDocumentList.Items[Index]);

Gruß Der Unwissende
  Mit Zitat antworten Zitat
ozz

Registriert seit: 26. Jun 2005
131 Beiträge
 
#6

Re: Listenindex überschreitet maximum

  Alt 11. Nov 2005, 07:15
Danke. Ich habe den Fehler gefunden. Es lag an der Typenkonvertierung.
Besten Dank auch für den Tip mit FastMM.
  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 14:32 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