Methoden anderer Units nutzen

Für Fragen von Einsteigern und Programmieranfängern...
tightTannic
Beiträge: 20
Registriert: Di 31. Jan 2017, 19:46
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Berlin

Re: Methoden anderer Units nutzen

Beitrag von tightTannic »

Mathias, du hattest recht :wink:
Beim manuellen Ändern der Klassennamen TFmain zu Tmain / Tside und so weiter habe ich mich vollkommen verwurstet sodass in unit1 von TFmain und in unit2 von Tmain die Rede war...

Ich habe jetzt per "Suchen und ersetzten" alles zu Tmain geändert.

Alles klar :D hier das Projekt, hat vielleicht noch keinen so schönen Namen
Dateianhänge
agdsa.zip
(1.9 MiB) 48-mal heruntergeladen

Jole
Beiträge: 114
Registriert: Fr 4. Jul 2014, 14:39
OS, Lazarus, FPC: Linux
CPU-Target: amd64

Re: Methoden anderer Units nutzen

Beitrag von Jole »

Mathias hat geschrieben:
Jole hat geschrieben:Was passiert eigentlich wenn in unit1 und unit2 für die Klassen ein der der selbe Bezeichner verwendet wird?


Ich weis nicht wie tightTannic das hingekriegt hat. Wen ich an 2 Forms, den gleichen Namen geben will, motzt die IDE da schon.
Und wen man es irgendwie manuell ändert, wird es spätestens in der *.lpr-Datei bei FormCreate Probleme geben.

Wenn in einer unit zwei gleichnamige Klassen deklariert werden, dann pfeift dich der Compiler an. Wenn aber zwei gleichnamige Klassen in unterschiedlichen units deklariert werden, dann hat die Klasse Priorität die die andere unit in der uses hat.

Mathias
Beiträge: 6167
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Methoden anderer Units nutzen

Beitrag von Mathias »

So wie es scheint, soll die Version im Anhang laufen.

Ich denke, dein grösste Fehler war, du wolltest selbst eine Classe in Unit2 erstellen und dafür hast du ein einfaches Copy-Paste von der Form-Classe der Unit1 gemacht.
Ich habe in der Unit2 die Klassen-Deklaration angepasst.
Und im Form1 habe ich ein Create und Destroy für deine Classe in Unit2 gemacht.
An der lfm und lpr -Datei musste ich noch manuell Anpassungen machen.

Aber jetzt sollte es laufen.
Dateianhänge
agdsa.zip
(1.28 MiB) 57-mal heruntergeladen
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

tightTannic
Beiträge: 20
Registriert: Di 31. Jan 2017, 19:46
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Berlin

Re: Methoden anderer Units nutzen

Beitrag von tightTannic »

Mathias hat geschrieben:Ich denke, dein grösste Fehler war, du wolltest selbst eine Classe in Unit2 erstellen und dafür hast du ein einfaches Copy-Paste von der Form-Classe der Unit1 gemacht.
Mein größter Fehler überhaupt war, eine neue Unit mit Klasse zu schreiben, ohne zu wissen, wie man Klassen erstellt / handhabt x) (schön dumm)
Die Aufgabe von Klassen haben für mich bis jetzt immer Records erldigt.
Mathias hat geschrieben:Ich habe in der Unit2 die Klassen-Deklaration angepasst.
Und im Form1 habe ich ein Create und Destroy für deine Classe in Unit2 gemacht.
An der lfm und lpr -Datei musste ich noch manuell Anpassungen machen.
Danke ! Das war wohl der schnellste Weg mit auf die Sprünge zu helfen ;)

Mathias hat geschrieben:Aber jetzt sollte es laufen.
Ja funktioniert ! =) Zumindest so, als alles noch in einer Unit steckte.

Jole hat geschrieben:Wenn in einer unit zwei gleichnamige Klassen deklariert werden, dann pfeift dich der Compiler an. Wenn aber zwei gleichnamige Klassen in unterschiedlichen units deklariert werden, dann hat die Klasse Priorität die die andere unit in der uses hat.
Auch das ist gut zu wissen; also hat unit1 die Methode aus unit2 deswegen nicht gefunden, weil deren Klasse quasi überschrieben wurde =/ (Worin besteht darin überhaupt der Sinn !?)

Nagut, ich betrachte das Problem als gelöst :D
Vielen Dank für eure Hilfe.

mfG.

Mathias
Beiträge: 6167
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Methoden anderer Units nutzen

Beitrag von Mathias »

Mein größter Fehler überhaupt war, eine neue Unit mit Klasse zu schreiben, ohne zu wissen, wie man Klassen erstellt / handhabt x) (schön dumm)
Die Aufgabe von Klassen haben für mich bis jetzt immer Records erldigt.

Wen man weis, wie Klassen funktionieren, sind diese eine sehr gute Sache.
Wen möglich, mache ich alles mit Klassen, schlussendlich hat man damit sehr sauberen Code.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten