Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Probleme mit OOP bei mehreren Units (https://www.delphipraxis.net/11685-probleme-mit-oop-bei-mehreren-units.html)

Jessy_ 11. Nov 2003 20:13


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 :)

Christian Seehase 11. Nov 2003 20:32

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)

Haegar 11. Nov 2003 20:33

Re: Probleme mit OOP bei mehreren Units
 
zeig doch mal ein wenig code dann wirds leichter.
ciao haegar

Hansa 11. Nov 2003 20:43

Re: Probleme mit OOP bei mehreren Units
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Jessy_
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...

Dann mußt Du deine Denkweise etwas umstellen. Wenn Du keinen Plan davon hast, dann informiere Dich. Da gilt nämlich gewußt wie und nicht "try and error".

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

Jessy_ 11. Nov 2003 21:22

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:
Interface
function TGrossbuchstaben.Gb_back(a:integer):string;
.
.
.
{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}

Delphi-Quellcode:
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;


.
.
.
Ach und wenn wa schonmal dabei sind *g* ...wie ruf ich die Funktion dann in der Unit 1 auf? Normal mit
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]

Christian Seehase 11. Nov 2003 21:40

Re: Probleme mit OOP bei mehreren Units
 
Moin Jessy,

das hier

Delphi-Quellcode:
Interface
function TGrossbuchstaben.Gb_back(a:integer):string;
.
.
.
versteh' ich jetzt nicht wirklich.
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;

Jessy_ 11. Nov 2003 22:05

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