| Autor |
Beitrag |
florida
      
Beiträge: 137
Windows 7 Home Premium, Windows XP Professional, Windows 2000
Delphi 2010 Architect
|
Verfasst: So 03.10.10 20:11
Ich habe mich letzter Zeit ein bisschen mit Klassenbibliotheken beschäftigt und versuche seit heute mittag, mir selber eine Klassensammlung zu schreiben, aber jetzt treten schon die ersten Probleme auf. Und zwar gibt Delphi ständig einen Fehler raus, wenn ich versuche, eine property in diese Sammlung zu integrieren.
Hier ist der Code:
Einloggen, um Attachments anzusehen!
|
|
Tilman
      
Beiträge: 1405
Erhaltene Danke: 51
Win 7, Android
Turbo Delphi, Eclipse
|
Verfasst: So 03.10.10 20:15
Die prozedur WColor muss doch den Wert auch entgegennehmen procedure WColor(ColorValue: Integer);
Und nächstes mal bitte auch die Fehlermeldung schreiben
//edit
Da sind noch mehr Fehler drin. Da darf gar kein var sein, Felder werden in Klassen unter private deklariert.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34:
| [..] type OWindow = class private Name: string; ColorValue: Integer; constructor Create(); procedure Show(Caption: PWideChar; Left, Top, Width, Height, hWndParent, Menu: Integer); function RColor: Integer; procedure WColor(Value: Integer); published property Color: Integer read RColor write WColor;
end;
implementation
uses windows, messages;
var wClass: TWndClass; Msg: TMsg;
procedure OWindow.WColor; begin ColorValue := Value; end;
function OWindow.RColor: Integer; begin result := ColorValue; end; [..] |
Du brauchst für die Property übrigens überhaupt keine Procedure/Function zu deklarieren, du kannst das auch einfach so machen:
Delphi-Quelltext 1: 2: 3: 4:
| private ColorValue: Integer; public property Color: Integer read ColorValue write ColorValue; |
_________________ Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
Zuletzt bearbeitet von Tilman am So 03.10.10 20:23, insgesamt 1-mal bearbeitet
|
|
florida 
      
Beiträge: 137
Windows 7 Home Premium, Windows XP Professional, Windows 2000
Delphi 2010 Architect
|
Verfasst: So 03.10.10 20:21
OK! Vielen Dank! Ich habe es jetzt abgeändert und es funktioniert einigermaßen schon.
Aber jetzt habe ich ein kleines Beispielprogramm geschrieben, welches auf die property "Color" zugreift, jedoch wird die Fensterfarbe nicht geändert, sondern stattdessen kommt die Runtime-Meldung "Stack-Überlauf".
|
|
Tilman
      
Beiträge: 1405
Erhaltene Danke: 51
Win 7, Android
Turbo Delphi, Eclipse
|
Verfasst: So 03.10.10 20:28
Ich war noch nicht ganz fertig, mehr dazu im obigen Post. Ansonsten gilt auch jetzt wieder:
1. Code Posten
2. Fehlermeldung Posten
3. Hilfe erhalten.
Nichts für ungut 
_________________ Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
|
|
florida 
      
Beiträge: 137
Windows 7 Home Premium, Windows XP Professional, Windows 2000
Delphi 2010 Architect
|
Verfasst: So 03.10.10 20:41
Ich habe gerade eben den Quellcode bearbeitet, wie es im Post stand.
Jetzt läuft es auch, aber die Farbe des Beispielprogrammes ändert sich trotzdem nicht.
Einloggen, um Attachments anzusehen!
|
|
Tilman
      
Beiträge: 1405
Erhaltene Danke: 51
Win 7, Android
Turbo Delphi, Eclipse
|
Verfasst: So 03.10.10 20:52
Da kann sich ja auch nichts ändern, denn du erzeugst das Fenster (oWindow.Show) mit der Farbe, und setzt erst danach Color. Du müsstest die zeilen umdrehen:
Delphi-Quelltext 1: 2: 3: 4: 5:
| with Window1 do begin Color := 2; Show('aaa', 500, 500, 500, 500, 0, 0); end; |
, allerdings ist das wohl auch nicht das was du suchst. Stattdessen müsstest du du dann wohl doch wieder eine procedure zum setzen der Property einfügen, und in dieser Code schreiben mit dem die Farbe des Fensters geändert wird. Aber frag mich nicht wie, ich habe noch nie auf diese Art Fenster erzeugt.
_________________ Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
|
|
florida 
      
Beiträge: 137
Windows 7 Home Premium, Windows XP Professional, Windows 2000
Delphi 2010 Architect
|
Verfasst: So 03.10.10 20:55
Tatsächlich muss es umgedreht werden. Ich dachte immer, man müsse das Fenster zuerst zeugen, da es bei der OWL glaube ich genauso war.
|
|
Tilman
      
Beiträge: 1405
Erhaltene Danke: 51
Win 7, Android
Turbo Delphi, Eclipse
|
Verfasst: So 03.10.10 20:58
Wie gesagt, es würde nur funktionieren wenn du dafür sorgst dass es funktioniert. Von selbst funktioniert meistens relativ wenig 
_________________ Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
|
|
|