AGB  ·  Datenschutz  ·  Impressum  







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

TCollection = not TCollection ?

Ein Thema von EWeiss · begonnen am 6. Jul 2011 · letzter Beitrag vom 7. Jul 2011
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.258 Beiträge
 
Delphi 12 Athens
 
#1

AW: TCollection = not TCollection ?

  Alt 6. Jul 2011, 19:20
usp, ja

Ctrl.ClassType = TIrgendwas or Ctrl is TIrgendwas PS: Nur weil Klassen den gleichen Namen haben, müssen sie nicht die selben Klassen-Deklarationen besitzen.
Geh mal raus und frage so lange, bis du einen "Frank" gefunden hast ... mit etwas Glück bin ich das.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 6. Jul 2011 um 19:23 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: TCollection = not TCollection ?

  Alt 6. Jul 2011, 19:41
usp, ja

Ctrl.ClassType = TIrgendwas or Ctrl is TIrgendwas PS: Nur weil Klassen den gleichen Namen haben, müssen sie nicht die selben Klassen-Deklarationen besitzen.
Geh mal raus und frage so lange, bis du einen "Frank" gefunden hast ... mit etwas Glück bin ich das.
Da frag ich doch besser nach himitsu..
Ist bestimmt bekannter zumindest nicht 1 zu ner million bis ich dich finde.

Komme auf keinen grünen zweig da ich nicht auf die Objekte der Form direkt zugreifen kann.

gruss

Geändert von EWeiss ( 6. Jul 2011 um 20:08 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.258 Beiträge
 
Delphi 12 Athens
 
#3

AW: TCollection = not TCollection ?

  Alt 6. Jul 2011, 20:26
Es handelt sich doch um Komponenten einer Form der eigenen Anwendung?
Wenn ja, dann siehe PSS in #11.

PS: Von Delphi automatisch erzeugt form haben immer Application als Owner, weswegen sie sich auch über Application.Components finden lassen.
Alle anderen delphieigenen TopLevel-Forms sind nochmal über Screens.Forms aufzufinden.



Ach ja, die Variante über den ClassType hat noch den vorteil der Quellcodevervollständigung, beim Schreiben der Namen und das Ganze wird dann auch nochmal über den Kompiler validiert,
wärend man sich bei den Strings nur mal verschreiben braucht (sei es uch nur in der Groß-/Kleinschreibung) und schon wird der Vergleich schnell Mal was von FALSE behaupten.
Abgesehn davon, daß ein Integervergleich ein klein bissl optimaler ist, als ein Stringvergleich.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: TCollection = not TCollection ?

  Alt 6. Jul 2011, 20:47
Zitat:
Es handelt sich doch um Komponenten einer Form der eigenen Anwendung?
Wenn ja, dann siehe PSS in #11.
Jain..
Die werden in einer DLL ausgewertet.
Das bereitet probleme.

Sagte ja schon ich sende SELF aber das was in Self(eigene Anwendung) steht kommt in der DLL nicht an.
Dann wäre es alles kein problem.

So wie hier von Luckie schon gesagt
Moment. Deine DLL kennt doch das Form-Objekt gar nicht, weil sie einen anderen Speichermanager hat. Das heißt du kannst kein Objekt an einer DLL übergeben. Es sei denn du nutz die Sharemem.dll von Borland als Speichermanager.
Komme ich so ohne weiteres nicht an die objekte heran.

EDIT:
Zitat:
haben immer Application als Owner
Da muss ich nochmal was überdenken.

gruss.

Geändert von EWeiss ( 6. Jul 2011 um 20:54 Uhr)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#5

AW: TCollection = not TCollection ?

  Alt 6. Jul 2011, 21:08
"self" ist auch nur ein Pointer auf die aktuelle Instanz, im eigenen Adressraum. Für die DLL ist das, bestenfalls, ungültiger Speicher, oder eben zufällige Daten im Irgendwo.
"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
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: TCollection = not TCollection ?

  Alt 6. Jul 2011, 21:21
"self" ist auch nur ein Pointer auf die aktuelle Instanz, im eigenen Adressraum. Für die DLL ist das, bestenfalls, ungültiger Speicher, oder eben zufällige Daten im Irgendwo.
Ist so auch nicht richtig..
Wenn ich self übergebe habe ich ja das gültige Handle der Anwendung aber nicht die Komponenten dieser.

Und sag mir nicht das wäre jetzt irgendein handle..
Die kann ich schon vergleichen

Ich glaube da muss ich langsam passen
Oder aber die Komponenten direkt übergeben wie bei der Scrollbar wenn es anders nicht geht.
Das gleich in VB sind 4 Zeilen dann habe ich alles was ich brauche.

Übersetzung von Delphi nach VB

Code:
Public Property Get ParentObj() As Object

Dim TempObj As Object

    If m_ParentObj = 0 Then
        Set ParentObj = Nothing
    Else
        CopyMemory TempObj , m_ParentObj, 4
        Set ParentObj = TempObj
        CopyMemory TempObj, 0, 4
    End If

End Property
Und schon habe ich zugriff auf alle Objekte die sich auf der Form befinden.
Warum ist das nur sooooo kompliziert in Delphi.

PS:
Aber wir kommen vom Thema ab.

gruss

Geändert von EWeiss ( 6. Jul 2011 um 21:38 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: TCollection = not TCollection ?

  Alt 6. Jul 2011, 21:44
sorry push..

Bei der Übergabe der Combobox direkt funktioniert es aber ich will alle gleichzeitig verarbeiten können.

Warum geht das nicht?

Das will ich vermeiden

Delphi-Quellcode:
  ComboHook := HookedCombo_Create;
  if assigned(ComboHook) then
  begin
    ComboHook.ComboImg := ScrbMemoHook.CreateImageFromFile(FilePath + 'ScrollBarSkin\Combo.png');
    ComboHook.FrameColor := $FCAC65;
    ComboHook.FrameHighLite := $FFE9D6;

    ComboHook.SetComboParentObj(ComboBox1);
    ComboHook.Connect;

  end;

  ComboHook2 := HookedCombo_Create;
  if assigned(ComboHook2) then
  begin
    ComboHook2.ComboImg := ScrbMemoHook.CreateImageFromFile(FilePath + 'ScrollBarSkin\Combo.png');
    ComboHook2.FrameColor := $FCAC65;
    ComboHook2.FrameHighLite := $FFE9D6;

    ComboHook2.SetComboParentObj(ComboBox2);
    ComboHook2.Connect;
  end;
und an stelle dessen!

Delphi-Quellcode:
ComboHook := HookedCombo_Create;
  if assigned(ComboHook) then
  begin
    ComboHook.ComboImg := ScrbMemoHook.CreateImageFromFile(FilePath + 'ScrollBarSkin\Combo.png');
    ComboHook.FrameColor := $FCAC65;
    ComboHook.FrameHighLite := $FFE9D6;

    ComboHook.SetComboParentObj(self);
    ComboHook.Connect;

  end;

verwenden um alle Comboboxen der Anwendung innerhalb der DLL zu enumerieren/verwalten..

Geändert von EWeiss ( 7. Jul 2011 um 17:18 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.258 Beiträge
 
Delphi 12 Athens
 
#8

AW: TCollection = not TCollection ?

  Alt 7. Jul 2011, 08:31
Dann nimm eben keine DLL, sondern eine BPL.
Schon hast du überall die gleiche RTTI, den gleichen Speichermanager und diesbezüglich keinerlei Probleme mehr.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

AW: TCollection = not TCollection ?

  Alt 7. Jul 2011, 09:07
Dann nimm eben keine DLL, sondern eine BPL.
Schon hast du überall die gleiche RTTI, den gleichen Speichermanager und diesbezüglich keinerlei Probleme mehr.
Die muss man aber Installieren oder?
Und habe auch keinerlei erfahrung damit.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.258 Beiträge
 
Delphi 12 Athens
 
#10

AW: TCollection = not TCollection ?

  Alt 7. Jul 2011, 18:12
Die muss man aber Installieren oder?
Und habe auch keinerlei erfahrung damit.
Die kann man auch wie eine normale DLL verwenden.

Wenn man sie statisch läd, dann braucht man nichtmal die Prozeduren/Funktionen exprotieren/importieren ... macht alles Delphi für einen.

Man indet nur über Uses die Units ein, welche man möchte und sobald die Anwendung mit Laufzeitpackages kompiliert wird und dieses Package mit angegeben wurde, dann werden die Units nicht mehr in die EXE eingebunden, sondern werden nur automatisch mit der BPL verlinkt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 19:01 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