Autor Beitrag
Tendl
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 117



BeitragVerfasst: Do 18.03.04 17:56 
Ich habe eine einfache nicht visuelle Komponente entwickeln wollen,
deren Hauptaufgabe es ist über eine DLL zu kommunizieren. Im wesentlichen funktioniert auch alles, ich habe nur folgendes Problem:

Die Komponente schaut folgendermaßen aus:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
  TNew = class(TComponent)
  private
    { Private declarations }
    fport: byte;
  published
    { Published declarations }
    property port: byte read FPort write FPort default 1;
  end;


Ich erwarte mir jetzt eigentlich, daß wenn ich die Komponente aus der der Palette auf
mein Formular ziehen im Objectinspector eine 1 in der Eigenschaft Port. Leider ist dort
immer wieder nur eine Null zufinden.

Die Komponente befindet sich in der dclusr, also der Standartlib für eigene Erweiterungen.
Neucompilieren der Lib hat mich nicht weiter gebracht, auch das Entfernen der Komponente
aus der Lib und das Neueinfügen nicht.

Was mache ich falsch???

Danke
Thomas
Tryer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 226
Erhaltene Danke: 7



BeitragVerfasst: Do 18.03.04 19:05 
Tendl hat folgendes geschrieben:
Ich erwarte mir jetzt eigentlich, daß wenn ich die Komponente aus der der Palette auf
mein Formular ziehen im Objectinspector eine 1 in der Eigenschaft Port.

Man sollte halt manchmal (vor allem wenn einem etwas seltsam vorkommt) in der Hilfe nachschauen.. was das default bewirkt ist dort leicht verständlich erklärt.

".. default 1;" heist nur das die Property so sie denn den Wert 1 hat nicht in der dfm-Datei abgelegt wird, initialisiert wird sie trotzdem mit der für Byte-Variablen typischen 0.
Wenn Du da eine 1 erwartest must Du diese selber setzen, z.b. im Constructor.

MfG,
Tryer
Tendl Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 117



BeitragVerfasst: Mo 22.03.04 10:10 
Danke,
für die Erklärung, den Vorwurf muß ich wohl einstecken, aber jetzt habe ich das endlich
kapiert.

Thomas
Tendl Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 117



BeitragVerfasst: Di 23.03.04 14:13 
War wohl doch nichts:

Wenn ich die Zeile
ausblenden Delphi-Quelltext
1:
    fPort   := 1;					


in den constructor Create einfüge verändert sich das Verhalten nicht. Ich habe verchiedenes probiert bis hin zum kompletten Entfernen der Komponente aus der Palette, trotzdem steht die Property nach dem Einfügen der Komponente auf der Form stets auf 0.

Kann mir jemand weiter helfen?

Thomas
iGoA
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 103

Alle Win´s
D5 Prof
BeitragVerfasst: Di 23.03.04 14:16 
Sowas hatte ich auch neulich. Probier mal das entsprechende Package komplett neu zu kompilieren und danach Deine Komponente auf ein neues Formular zu ziehen (so, dass der Konstruktor aufgerufen wird).
MaxiTB
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 679

Win2000, WinXp, Workbench ;-)
D7 Ent, VS2003 Arch.
BeitragVerfasst: Di 23.03.04 14:16 
Eigentlich müßte es gehen ... es gibt zwar noch das Schlüsselwort stored, aber so genau hab ich mich mit dem Thema auch noch nicht beschäftigt.

_________________
Euer Mäxchen
Wer früher stirbt, ist länger tot.
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Di 23.03.04 14:31 
iGoA hat es bereits angesprochen... du musst das Package in dem die Komponente installiert ist neu kompilieren.. dann sollte es gehen..!

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
Tendl Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 117



BeitragVerfasst: Di 23.03.04 15:36 
Den Gedanken hatte ich auch schon.

Also ich habe neu compiliert, Kein Erfolg.
Die Komponenten komplett aus der Lib entfernt und neu kompiliert, damit wurde dann auch die Komponente von der Palette entfernt, Delphi geschlossen, dann wieder geöffnet. das Projekt ohne die Komponente (ebenfalls von TForm gelöscht) compiliert, was natürlich zu Fehlern führt, da die Komponente fehlt. Delphi wieder geschlossen und die *.dfm Datei kontrolliert, keine Spur mehr von der Komponente vorhanden. Dann habe ich Delphi wieder geöffnet, die Komponte neu im Package installiert. Im nächsten Schritt habe ich die Komponente wieder TForm hinzugefügt. Leider war der Initialwert wieder nicht die erwartete Eins sondern Null.

Thomas
iGoA
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 103

Alle Win´s
D5 Prof
BeitragVerfasst: Di 23.03.04 16:18 
Hast Du mal versucht, die Komponente auf ein Formular eines komplett neuen Projekte zu packen? Vielleicht sind in Deinem Testprojekt irgendwelche "Leichenteile".
Tendl Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 117



BeitragVerfasst: Di 23.03.04 16:45 
Habe ich gerade auf Deinen Tip hin versucht, mit dem identischen Ergebnis
Port bleibt auf Null