![]() |
Probleme mit OOP bei mehreren Units
Moin Leutz :)
ich versuche (weil ich muß ;)) ein kleenes Projekt von mir auf OOP umzustellen. Das Problem ist erstens: ich hab ansich keinen Plan von OOP und zweitens mein Proggie startet nicht :gruebel: Ich glaub da ist irgendwie ein Zusammenhang bei *vfg*. Ich hab zwei Units. In der erstens will ich eine Funktion aus der zweiten aufrufen welche sich in einer Klasse befindet. Nun weiß ich nicht wie ich ( u.a. ;)) den Interface Anteil gestalten muß, dass ich nicht ständig den Fehler bekomm, dass "eine ungültige Forward- oder External Deklaration vorliegt" bzw. dass " die Funktion einen Ergebnistyp benötigt". Kann mir da vielleicht jemand einen Tip geben? :? die Jessy mal wieder :) |
Re: Probleme mit OOP bei mehreren Units
Moin Jessy,
ein wenig Sourcecode wäre nicht zu verachten ;-) Wenn Du die Funktion einer Klasse, also eine Methode aufrufen willst, müsste es sich entweder um eine Klassenmethode handeln, so dass Du nicht extra dafür ein Objekt erzeugen müsstest, oder aber, der üblichere Falle, Du hast eine Instanz der Klasse gebildet, und kannst dann auf die Methode zugreifen. Mal so den gemeldeten Fehler betrachtet, klingt es allerdings so, als hättest Du die Implementierung der Methode im implementation Abschnitt vergessen (erste Fehlermeldung). Ausserdem fehlt die Angabe des Typen des Rückgabewertes (zweite Fehlermeldung) |
Re: Probleme mit OOP bei mehreren Units
zeig doch mal ein wenig code dann wirds leichter.
ciao haegar |
Re: Probleme mit OOP bei mehreren Units
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Und wenn Du so was nun versuchst nur "weil ich muß", so kann man nur folgendes sagen: Ohne OOP wäre kein heutiges Windows-Programm denkbar. Das würde ich schon alles etwas ernster nehmen. Im Anhang ist der Borland TP OOP 5.5 guide. Das ist ein recht guter Einstieg. Aber Achtung ! 2.5 MB |
Re: Probleme mit OOP bei mehreren Units
@ Hansa
Ja also, dass ich nu GARnix mit OOP anfangen kann isses nu auch nicht ;). Nix mit "try and Error". Den Sinn seh ich ja schon in dem ganzen nur steh ich halt ein wenig unter Zeitdruck weil das Projekt von der Uni aus bis dann und dann feddich sei muß wegen Klausurzulassung und so Späße. Dann hab ich net ganz soviel Zeit mich groß einzuarbeiten. Außerdem gehts da auch nur um kleinkram was OOP-mäßig gemacht werden muß... Zum Quelltext des ganzen: in Unit 2 steht u.a. folgendes:
Delphi-Quellcode:
{hier liegt das Problem. Ich weiß nicht was genau hier im Bezug auf die function stehen muß, so dass ich die in der Unit 1 nutzen kann. Laß ich TGrossbuchstaben. weg krieg ich Fehler 1 von oben sonst Fehler 2...den mit dem Rückgabewert...seltsamerweise}
Interface
function TGrossbuchstaben.Gb_back(a:integer):string; . . .
Delphi-Quellcode:
Ach und wenn wa schonmal dabei sind *g* ...wie ruf ich die Funktion dann in der Unit 1 auf? Normal mit
type
TZeichensatz = class(TObject) private Buchst: String; public constructor create; end; TGrossbuchstaben = class(TZeichensatz) public function Gb_back(a:integer):string; constructor create; end; . . . Implementation Uses Unit1; function TGrossbuchstaben.Gb_back(a:integer):string; var bla begin blabla end; . . . TGrossbuchstaben.Gb_back(Integerwert); ? Da gabs auch Probs. Wobei ich denke, dass das was mit dem dem anderen Fehler zutun hat. ...ach und sorry wenn ich mit so dummen Fragen nerve ;). Ich Programmier erst seit kurzem wegen der Uni. Hab hier erst angefangen...und hab demnach noch net so den Plan :? [edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit] |
Re: Probleme mit OOP bei mehreren Units
Moin Jessy,
das hier
Delphi-Quellcode:
versteh' ich jetzt nicht wirklich.
Interface
function TGrossbuchstaben.Gb_back(a:integer):string; . . . Lass' die Zeile mal weg. Du hast ja eine Klasse (TGrossbuchstaben) in der das als Methode deklariert und implementiert ist. Du müsstest in Unit1 eine Instanz der Klasse bilden, und könnest dann die Methode nutzen. z.B.
Delphi-Quellcode:
var
gbWork : TGrossbuchstaben; begin gbWork := TGrossbuchstaben.Create; try ShowMessage(gbWork.gb_back(50)); finally FreeAndNil(gbWork); end; end; |
Re: Probleme mit OOP bei mehreren Units
Soweit hatte ich das ja auch erstmal schon.
Ich habs jetzt aber :dancer: Ich hab die Funktion einfach zur Klassenmethode gemacht und das oben auch weggelassen. Ich hab das eine mal, als ich das schonmal so probiert hatte, die Klassenmethode net bedacht Trotzdem danke für deine Mühen :-D. Ich wär ohne deinen post net wieder drauf gekommen :thuimb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz