Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#7

AW: TObjectList sehr anfällig?

  Alt 26. Aug 2012, 11:34
Das umschreiben der ButtonExists sorgt zumindest dafür das es zu keinen ElistError mehr kommt.

Wenn ich hingegen irgendeine Zeile von AddButton entferne dann kracht es wieder.
Delphi-Quellcode:
function TClsProgBar.AddButton(var oButton: TClsButtonInfo): Bool;
begin
  if ButtonExists(oButton.Num) then
    RemoveButton(oButton.Num);

  FColButtons.Add(oButton); // kann nicht entfernt werden
  FColButtons.Insert(oButton.Num, oButton); // Das auch nicht

  Result := True;

end;

Wirklich kompiliziert die Collection von VB nach Delphi zu portieren.
Hier sind mal die VB Teile dazu..
mcolButtons = Collection und in Delphi halt die TObjectList.

Code:
Public Function AddButton(ByRef roButton As clsButtonInfo) As Boolean

    If ButtonExists(roButton.Num) Then RemoveButton roButton.Num

    mcolButtons.Add roButton, CStr(roButton.Num)

End Function
Code:
Public Property Get Button(ByVal vlBtn As Long) As clsButtonInfo

    On Error Resume Next

        Set moSelButton = mcolButtons.Item(CStr(vlBtn))

        Set Button = moSelButton
        Err.Clear

End Property
Code:
Private Function ButtonExists(ByVal vlBtn As Long) As Boolean

Dim oButton As clsButtonInfo

    Set oButton = Button(vlBtn)
    ButtonExists = CBool(Not oButton Is Nothing)

End Function
Nur das ihr den Unterschied sehen könnt.
Sorry habe mich noch nie mit der ObjectList beschäftigt.

Nebenbei:
Es geht hier nicht um Copy/Paste
Es ist ein Programm das ich 1999 in VB geschrieben habe was da auf der VB seite abgeht weiss ich und stellt kein problem dar.

gruss

Geändert von EWeiss (26. Aug 2012 um 11:40 Uhr)
  Mit Zitat antworten Zitat