AGB  ·  Datenschutz  ·  Impressum  







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

TObjectList sehr anfällig?

Ein Thema von EWeiss · begonnen am 26. Aug 2012 · letzter Beitrag vom 31. Aug 2012
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

AW: TObjectList sehr anfällig?

  Alt 26. Aug 2012, 15:02
Zitat:
Vieles an deinem Code ist offensichtlich aus dem VB Programm übernommen
Ja ich wollte nicht das komplette Projekt neu erfinden.
Denke auch wenn ich das heute direkt in Delphi also neu schreiben würde sähe es auch etwas anders aus.
Das wäre mir aber dann doch zuviel des guten zumal da ich es schon einmal geschrieben habe.

Zitat:
dem VB Programm übernommen
aus meinem VB Programm.

Das mit dem addieren funktioniert jetzt ohne Probleme wie am am Shot erkennen kann.
Das entfernen werde ich dann auch noch schaffen.

Der vorteil an der ProgBar Klasse ist halt das ich die nur einmal erstellen muss
diese wird ja dann von zwei Unterschiedlichen Programmen verwendet.
Genauso wie die Klasse ButtonInfo da hab ich mir schon einiges an Arbeit gespart.

Das hier ist ja nur das Konfigurations Programm für die Button
Das eigentliche Programm ProgStart startet dann die Programme für die von ProgBar erstellten ToolBars.
Der sinn und zweck des programms war Hauptsächlich den Desktop sauber zu halten und Programme zu steuern die früher
keine eigene ToolBars enthielten so wie NotePad.

Aber grundsätzlich ist es schon richtig das man so ein Projekt eigentlich komplett neu aufsetzen sollte.
Aber wie schon gesagt zu viel des guten.

gruss

Geändert von EWeiss (26. Aug 2012 um 21:12 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: TObjectList sehr anfällig?

  Alt 26. Aug 2012, 21:18
oops .. vergessen zu Antworten

Zitat:
Tja, die Collection in Delphi registriert sich bei ihren enthaltenen TComponents und auch andersrum.
Sobald einer er Beteiligten freigegeben wird, wird die aufgebaute Verknüpfung aufgelöst und die Komponenten aus der Liste ausgetragen.
Soweit man TComponente verwendet.

Zitat:
Wer es nicht schafft seine Verlinkungen sauberzuhalten und eindeutige Besitzverhältnisse sichzustellen (nur Einer darf etwas freigeben ... halt das Highlander-Prinzip "Es kann nur Einen geben") oder es so zu regeln, daß sich alle beteiligten Verantwortlichen untereinander informieren, der sollte besser auf Interfaces umsteigen oder auf andere Managed-Systeme.
Gebe ich dir im grunde recht. (Siehe Interface meiner LIB)
Aber es geht um Nonvcl da zählen einige deiner guten Ratschläge leider nicht.
Ansonsten würde ich sie verwenden.. kannst mir glauben

gruss

Geändert von EWeiss (27. Aug 2012 um 05:18 Uhr)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.689 Beiträge
 
Delphi 2007 Enterprise
 
#3

AW: TObjectList sehr anfällig?

  Alt 26. Aug 2012, 23:06
Aber es geht um Nonvcl da zählen einige deiner guten Ratschläge leider nicht.
Klare Besitzverhältnisse haben imho nun garnix mit der VCL zu tun. Eher damit, ob man sich selber den Gefallen tun möchte oder lieber im eigenen Kauderwelsch suhlt
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.495 Beiträge
 
Delphi 12 Athens
 
#4

AW: TObjectList sehr anfällig?

  Alt 27. Aug 2012, 08:58
Scheinbar hat hier oButton.Num nichts mit dem Index in der TObjectlist zu tun.
Ursache kann z.B. sein, das die Buttons nicht vollständig, doppelt oder nicht in der richtigen Reihenfolge eingefügt oder nach dem Einfügen nicht sortiert werden. Also sollte man den Index unberücksichtigt lassen, statt dessen nach dem richtigen Button suchen:
Delphi-Quellcode:
type
  TMyColButtons = class(TObjectList)
  private
    function GetButton(ANum: Integer): TClsButtonInfo;
  public
    procedure Add(AButton: TClsButtonInfo);
    procedure Remove(ANum: Integer);
    property Button[ANum: Integer]: TClsButtonInfo read GetButton; default;
  end;

function TMyColButtons.GetButton(ANum: Integer): TClsButtonInfo;
var
  i: Integer;
begin
  for i := 0 to Count - 1 do
  begin
    Result := TClsButtonInfo(Items[i]);
    if Result.Num = ANum then
      Exit;
  end;
  Result := nil;
end;

procedure TMyColButtons.Add(AButton: TClsButtonInfo);
begin
  Remove(AButton.Num);
  inherited Add(AButton);
end;

procedure TMyColButtons.Remove(ANum: Integer);
var
  oButton: TClsButtonInfo;
begin
  oButton := Button[ANum];
  if Assigned(oButton) then
    inherited Remove(oButton);
end;
Wichtig ist:
Wenn ein Button gelöscht werden soll, muss er aus der Liste entfernt werden, bevor er freigegeben wird.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: TObjectList sehr anfällig?

  Alt 27. Aug 2012, 09:06
Ahh hab diesbezüglich auch schon Fehler gefunden.
Beim klick auf einen Button werden mir nur ungerade Button korrekt zurückgeliefert.

Vielleicht behebt dein Code das problem direkt mit.

Werde es mal testen.

PS:
Ja leider geht nicht alles da VBCollection doch anderes gehandhabt werden.

Danke.

gruss

Geändert von EWeiss (27. Aug 2012 um 10:03 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: TObjectList sehr anfällig?

  Alt 27. Aug 2012, 10:04
Hab mir deinen Code nochmal durchgesehen er hilft mir leider nicht weiter
Trotzdem nochmal Danke.

Zitat:
Wenn ein Button gelöscht werden soll, muss er aus der Liste entfernt werden, bevor er freigegeben wird.
Im moment ist mir noch nicht ersichtlich was eigentlich alles in die ObjectList gespeichert wird.
Die gesamten eigenschaften der Classen oder nur der Index des aktuell addierten Button.


gruss
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.669 Beiträge
 
Delphi 12 Athens
 
#7

AW: TObjectList sehr anfällig?

  Alt 27. Aug 2012, 10:10
In einer TObjectList werden die Instanzen abgelegt, Du hast also vollen Zugriff auf alle Eigenschaften und Methoden der jeweiligen Instanz. Wenn es sich nicht um eine spezialisierte Ableitung bzw. eine generische TObjectList handelt, musst Du diese aber vorher noch auf den entsprechenden Typen casten.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  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 23:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz