AGB  ·  Datenschutz  ·  Impressum  







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

AV bei Verwendung einer INI-File

Ein Thema von 3_of_8 · begonnen am 25. Apr 2006 · letzter Beitrag vom 26. Apr 2006
Antwort Antwort
Seite 3 von 4     123 4      
Muetze1
(Gast)

n/a Beiträge
 
#21

Re: AV bei Verwendung einer INI-File

  Alt 26. Apr 2006, 13:13
Mal castest du ModuleButtons[I].Tag, mal ModuleButtons[I] auf einen Pointer und dann auch TModuleClass - was denn nun?

Und von was für einem Typ ist das Array ModuleButtons?

/EDIT: Vermutlich wird der komische TypeCast von Tag (der wohl 0 ist) auf einen Pointer ein Nil Pointer der zum Nil TModuleClass wird. Also nochmal: Warum überhaupt so komisches Konstrukt? Warum die Typensicherheit so über Board werfen?
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#22

Re: AV bei Verwendung einer INI-File

  Alt 26. Apr 2006, 13:19
Zitat von 3_of_8:
Später lese ich das wieder aus und erzeuge eine Instanz:

module:=TModuleClass(Pointer((Sender as TComponent).Tag));
Damit erzeugst du keine Instanz.

Damit würdest du eine Instanz der in dem Tag enthaltene Class Of TModule Ableitung der Class of bekommen.
module := TModuleClass(Pointer((Sender as TComponent).Tag)).Create; bzw. Wenn Module vom Typ Class of TModule ist, dann erzeugst damit eine Instanz:

 Instanz := Module.Create;
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#23

Re: AV bei Verwendung einer INI-File

  Alt 26. Apr 2006, 13:37
Zitat von 3_of_8:
Also. Ich habe KEINE Variable namens ClassName. Ich will diese statische Methode haben.
Ich will auch...die Deklaration der Klasse sehn.
Wenn die Klasse naemlich von TObject abgeleitet ist (was sie immer ist), dann hast du zwar keine Variable namens ClassName, dafuer aber eine Funktion ClassName() von TObject. Allerdings gibt mir die Funktion auch bei einer class function den Klassennamen zurueck.

Was willst du denn eigentlich tun/erreichen?
Und warum castest du ModuleButtons[i] auf Pointer, dann auf TModuleClass, anstatt direkt ein Objekt von TModuleClass abzuspeichern? Irgendwie ist das krass konfus....
BTW, dieser Aufruf: TModuleClass(Pointer(ModuleButtons[I].Tag)).ClassName liefert immer "TModuleClass" zurueck, schliesslich castest du auf TModuleClass. Ich verstehe deine Art zu programmieren irgendwie ueberhaupt nicht

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#24

Re: AV bei Verwendung einer INI-File

  Alt 26. Apr 2006, 14:54
TModuleClass ist eine Class of TModule. Wenn ich dann eine Instanz davon erzeute, erzeuge ich eine Instanz eines abgeleiteten Typs von TModule. Ich will einfach beim Klick auf einen SpeedButton die damit verbundene Klasse instantiieren. Das ganze soll dynamisch und leicht erweiterbar sein.

Das funktioniert auch prima, bis darauf, dass ich in der class function GetModuleID keine INI-Datei verwenden kann. Das ist mein Problem.

Wenn ich wüsste, was die ntdll.dll macht, wäre es evtl. auch einfacher.

Und die Deklaration der Klasse steht nebenbei in meinem ersten Beitrag.

Ich will mit ClassName den Namen der Klasse, so wie ihn ClassName() zurückgibt.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#25

Re: AV bei Verwendung einer INI-File

  Alt 26. Apr 2006, 15:03
Ich zweifle an, dass man eine Metaklasse in einen Tag verbannen kann, da diese keine Instanzen haben sondern eine Typinformation sind. Kann man wirklich eine Ableitung von TModule als Klasse in einem Tag unterbringen? Die Elemente von TModuleClass sind doch keine Instanzen und somit keine Zeiger, daher die Frage ob man sie wirklich in einem Tag ablegen kann.

Ich glaube das das grundlegende Problem nicht in der GetModuleID liegt, sondern in dem Aufruf bzw. dem drumherum.
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#26

Re: AV bei Verwendung einer INI-File

  Alt 26. Apr 2006, 15:07
Die ntdll.dll ist der Kernel von Windows! Wenns da knallt, dann liegst nicht an der DLL selbst ...

Also versuchen wir es nochmal.

1. Wie ist ModuleButtons definiert? Wenn es als Array of TModuleClass definiert ist, dann kannst du das ganze gecaste sparen. Wenn nicht, frage ich mich ernsthaft warum nicht!

2. Wo und wie wird ModuleButtons gefüllt?

3. Ist es wirklich sehr sehr sehr verwunderlich, dass du mal:

TModuleClass(Pointer(ModuleButtons[I])).ClassName und mal

TModuleClass(Pointer(ModuleButtons[I].Tag)).ClassName Jetzt wo ich länger drüber nachdenke, gehe ich mal stark davon aus das du überall noch das .Tag ergänzen musst
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#27

Re: AV bei Verwendung einer INI-File

  Alt 26. Apr 2006, 15:11
Zitat von Muetze1:
Ich zweifle an, dass man eine Metaklasse in einen Tag verbannen kann, da diese keine Instanzen haben sondern eine Typinformation sind.
Und diese Typinformation hat einen eindeutigen Ort im Arbeitsspeicher, also ist das, was 3_of_8 da veranstaltet, eigentlich problemlos möglich.
Delphi-Quellcode:
i := Integer(TMouse);
  ShowMessage(TClass(i).ClassName);
Ansonsten schließe ich mich jim_raynor an, in diesen Fragen wird wohl der Knackpunkt liegen.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#28

Re: AV bei Verwendung einer INI-File

  Alt 26. Apr 2006, 18:35
Ich sage es nochmal: das ganze funktioniert wunderbar, bis auf das INI-File, wobei irgendwas mit ClassName() nicht hinhaut.

Das .Tag habe ich nur hier vergessen, in meinem Code stimmt das UND ES FUNKTIONIERT AUCH.

ModuleButtons ist ein array of TSpeedButton.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#29

Re: AV bei Verwendung einer INI-File

  Alt 26. Apr 2006, 18:45
Und alle Tags sind wirklich ungleich null?
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#30

Re: AV bei Verwendung einer INI-File

  Alt 26. Apr 2006, 19:04
Hi,

Ich hatte den selber mit INIs auch mal. Du darfst für den ersten Parameter auf gar keinen Fall einen Leerstring (oder einen string der nur aus Leerzeichen besteht) zurückgeben, sonst knallts in der ntdll.dll (zumindest unter XP)!

Siehe: http://qc.borland.com/wc/qcmain.aspx?d=9487

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 00:00 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