Autor Beitrag
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Mo 10.03.03 13:14 
Hi,

folgendes versuche ich zu verkürzen :
ausblenden Quelltext
1:
Datensatz.FieldByName ('ID').AsInteger;					

Das ist mir zu lang. Mit nachfolgendem Code wolte ich erreichen, daß ich nur schreibe :
ausblenden Quelltext
1:
DatenSatz.Feld ('ID');					


Ich will also alles von TIBdataSet erben und eine weitere Funktion zusätzlich implementieren.

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1021

Win 7, MacOS
Delphi x, VBA, PHP, ...
BeitragVerfasst: 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 .... :D

mfG
hansa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Mo 10.03.03 20:45 
Das wird aber wohl nicht viel nützen :

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1021

Win 7, MacOS
Delphi x, VBA, PHP, ...
BeitragVerfasst: 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... :roll:

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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: 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? :wink:

Wo hast du denn deine Instanz-Variable deklariert?

Cu,
Udontknow
hansa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Di 11.03.03 13:31 
Udontknow hat folgendes geschrieben:
Oder lässt du das weg? :wink:


hehe, so was lasse ich doch immer weg. 8) 8) 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Di 11.03.03 13:48 
Wie, jetzt kommt die Meldung nicht mehr? Na gut. :roll:

Objekte gibst du mit {Objekt}.Free frei.

Cu,
Udontknow
hansa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Fr 14.03.03 19:40 
Die Komponente ist jetzt in der Objektablage und zwar folgendermaßen:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: 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