| Autor |
Beitrag |
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Mo 10.03.03 13:14
Hi,
folgendes versuche ich zu verkürzen :
Quelltext 1:
| Datensatz.FieldByName ('ID').AsInteger; |
Das ist mir zu lang. Mit nachfolgendem Code wolte ich erreichen, daß ich nur schreibe :
Quelltext 1:
| DatenSatz.Feld ('ID'); |
Ich will also alles von TIBdataSet erben und eine weitere Funktion zusätzlich implementieren.
Quelltext 1: 2: 3: 4:
| type TDatenSatz = CLASS (TIBDataSet) FUNCTION Feld (name : string) : variant; END; |
Beim Compilieren kommt nun die Fehlermeldung : "Unsatisfied forward or external Declaration : TDatenSatz".
_________________ Gruß
Hansa
|
|
kiwicht
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: Mo 10.03.03 18:47
Hallöle,
poste doch mal bitte den Code für deine Funktion "FELD"...
und wenn nich, frag noch mal im "Object Pascal"-Forum nach, denn die Fehlermeldung hat meines Erachtens nicht (viel) mit Datenbanken zu tun, ich hab die nämlich auch öfter im anderen Kontext ....
mfG
|
|
hansa 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Mo 10.03.03 20:45
Das wird aber wohl nicht viel nützen :
Quelltext 1: 2: 3: 4:
| FUNCTION TDatenSatz.Feld (name : string) : variant; BEGIN FieldByName (name).value; END; |
Jetzt kommt folgendes: "Dataset should be of Type TIBdataSet, but is declared as TDatenSatz. Correct the Declaration ?" Woher weiß der überhaupt, daß das von TIBdataSet abgeleitet ist ???
_________________ Gruß
Hansa
|
|
kiwicht
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: Di 11.03.03 09:51
also eins vorweg: ich bin nicht grad der Spezialist was sowas angeht, aber n bisschen un-koscher kommts mir trotzdem vor...
| Zitat: | | Woher weiß der überhaupt, daß das von TIBdataSet abgeleitet ist ??? |
Siehe dein erstes Posting:
CLASS (TIBDataSet)
| hansa hat folgendes geschrieben: | | Das wird aber wohl nicht viel nützen : |
stimmt leider, hast du schon im ObjectPascal-Forum nachgefragt?
Wenn nicht hab ich nur n billigen Tip für dich: Mach nochmal ne ganz neue Application in der du NUR diese Sache mit dieser Klassen-Ableitung probierst, ma sehn obs dann klappt...
mfg
Zuletzt bearbeitet von kiwicht am Di 11.03.03 12:13, insgesamt 1-mal bearbeitet
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: Di 11.03.03 11:58
@Hansa:
| Zitat: | | Jetzt kommt folgendes: "Dataset should be of Type TIBdataSet, but is declared as TDatenSatz. Correct the Declaration ?" Woher weiß der überhaupt, daß das von TIBdataSet abgeleitet ist ??? |
Du hast eine Komponente von der Klasse TIBDataset auf dein Formular gezogen. Anschliessend hast du einfach die Klasse dieser Komponente im Quellcode geändert. Das geht so nicht.
Du musst stattdessen deinen Nachfahren nun in ein Package verfrachten und in die IDE einbauen. Schaue mal im Handbuch in das Kapitel "Komponentenentwicklung".
Cu,
Udontknow
|
|
hansa 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Di 11.03.03 12:23
| Udontknow hat folgendes geschrieben: | Du hast eine Komponente von der Klasse TIBDataset auf dein Formular gezogen. Anschliessend hast du einfach die Klasse dieser Komponente im Quellcode geändert. Das geht so nicht.
...Du musst stattdessen deinen Nachfahren nun in ein Package verfrachten und in die IDE einbauen. .. |
Letzteres hab ich schon befürchtet, aber ich habe die Komponente nicht auf die Form gezogen, siehe erstes Posting. Daß ich das ganze in die IDE einbauen muß war mir fast klar. Sonst kein OI etc. Oder? Wieder mal typisch, da wird groß über die tollen objektorientierten Programmiersprachen geredet, wie schön das doch alles ist und dann wird es einem unnötig schwierig gemacht, ein Objekt um eine simple Methode zu erweitern und das ganze zu benutzen.
_________________ Gruß
Hansa
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: Di 11.03.03 13:14
Die von dir angegebene meldung kommt aber genau in diesem Falle.
Du erzeugst also dein TDatensatz-Objekt Dataset manuell per Dataset:=TDatensatz.Create(Self), ja? Oder lässt du das weg?
Wo hast du denn deine Instanz-Variable deklariert?
Cu,
Udontknow
|
|
hansa 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Di 11.03.03 13:31
| Udontknow hat folgendes geschrieben: | Oder lässt du das weg?
|
hehe, so was lasse ich doch immer weg.  Das mit dem Self werd ich wohl nie verstehen. Scheint aber jetzt zu funktionieren. Kann leider erst später weiter machen. Fehlermeldung kommt keine mehr. Aber noch eine Frage bleibt offen. Muß ich nicht den allokierten Speicher wieder freigeben ? Wenn ja wie ? Mit Dispose oder was ?
_________________ Gruß
Hansa
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: Di 11.03.03 13:48
Wie, jetzt kommt die Meldung nicht mehr? Na gut.
Objekte gibst du mit {Objekt}.Free frei.
Cu,
Udontknow
|
|
hansa 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Di 11.03.03 17:15
Das geht jetzt doch tatsächlich. Aber für verschiedene Werte zu setzen bräuchte ich den OI, also muß ich das ganze wohl doch in die Komponentenpalette packen?
_________________ Gruß
Hansa
|
|
hansa 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Do 13.03.03 19:48
Das ganze habe ich jetzt versucht. Kriege die Komponente aber nicht auf die Palette. Bzw. ist sie da zu sehen, aber im OI ist nichts verändert. Was ist hier falsch ?
1. Quelltext habe ich angepaßt mit new -> Component
2. Compile
3. Install
Jetzt kommt Fehlermeldung, irgendein Package hätte irgendwas.
_________________ Gruß
Hansa
|
|
hansa 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Fr 14.03.03 19:40
Die Komponente ist jetzt in der Objektablage und zwar folgendermaßen:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| type TFIBDatenSatz = class(TFIBDataSet) private a : integer; { Private declarations } protected b : integer; { Protected declarations } public c : integer; { Public declarations } published d : integer; end; |
Im OI sehe ich aber nichts. Habe das extra mal so gemacht, weil ich mit dem immer noch auf Kriegsfuß stehe.
_________________ Gruß
Hansa
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: So 16.03.03 11:52
Hi!
Hi! Eigenschaften, die du im OI bearbeiten willst, müssen auch tatsächlich properties sein! Schau mal in der Delphi-Hilfe nach property.
Cu,
Udontknow
|
|