[Code] Delphi - Funktion aus der Klasse einer anderen Unit nutzen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Docean, 26. Juni 2012 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 26. Juni 2012
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    Delphi - Funktion aus der Klasse einer anderen Unit nutzen

    Hallo liebe RR`ler,
    ich bräuchte mal die Hilfe von einem schlauen Kopf
    Ich möchte ein ganz einfaches Programm erstellen, welches mir GeoDaten aus dem UTM-Format in das übliche Längen/Breiten-Format umrechnet.

    Code:
    33 U 391750 5819911
    wird zu
    Code:
    52.51855°N 13.40462°E
    Nun habe ich eine Unit (JalUTM) gefunden, welche mir diese (ziemlich komplizierte) Umrechnung abnimmt.
    D.h. ich habe diese Unit zu meinem Projekt hinzugefügt und auch oben in den Uses angegeben.

    Wenn ich nun aber aus meiner "StartUnit" die Funktion

    Code:
    function TUTMLLConverter.UTMtoLL(const Northing, Easting: Double; const Zone: string): TVector;
    mit ihren Parametern aufrufen möchte, dann erhalte ich leider folgenden Fehler:

    Code:
    [Error] Unit1.pas(299): This form of method call only allowed for class methods
    Ich habe euch die benötigten Units auf XUP geschoben, ggf. kann mir ja jemand helfen.
    LINK

    MfG Docean

    //edit: Seid nicht so streng mit mir
     
  2. 26. Juni 2012
    Zuletzt bearbeitet: 26. Juni 2012
    AW: Delphi - Funktion aus der Klasse einer anderen Unit nutzen

    Hab leider keine Ahnung von Delphi, aber nach Lesen dieses Links vermute ich, dass du in deiner StartUnit (die du scheinbar nicht der rar beigefügt hast?) zuvor keine Instanz von TUTMLLConverter erzeugt hast, sondern versuchst, die Funktion statisch aufzurufen. Class methods sind wenn ich das richtig verstehe sowas wie statische Methoden in Java, die man dort mit
    Code:
    Klassenname.[I]methodenName()[/I];
    aufruft, ohne vorher ein Objekt/eine Instanz zu erzeugen. Dein Fehler sagt aus, dass du genau das versuchst und das für deine Funktion nicht erlaubt ist.

    Poste doch sonst mal deine StartUnit bzw den Teil wo der Fehler auftritt.
     
    1 Person gefällt das.
  3. 26. Juni 2012
    AW: Delphi - Funktion aus der Klasse einer anderen Unit nutzen

    Das mag zwar leicht OT sein aber: Kann mir irgendjemand einen einzigen vernünftigen Grund nennen noch Delphi zu benutzen? (Abgesehen von irgendwelchen prähistorischen Bildungseinrichtungen die das vorschreiben.)
     
    1 Person gefällt das.
  4. 26. Juni 2012
    AW: Delphi - Funktion aus der Klasse einer anderen Unit nutzen

    Es gibt keinen Bereich der noch relevant wäre
    Der Rest ist bisher nur das Interface (d.h. mit keinen Funktionen belegt) und die Funktion möchte ich durch einen einfach Klick auf einen Button ausführen

    Code:
    procedure TForm1.Button2Click(Sender: TObject);
    var Norden: Double;
    var Osten: Double;
    var Zone: string;
    
    begin
    
    Norden := 3110783;
    Osten := 5819978;
    Zone := 'N33';
    
    TUTMLLConverter.UTMtoLL(Norden,Osten,Zone);
    
    end;
    Das heißt ich müsste nur irgendwo das Objekt noch mit
    Code:
    TUTMLLConverter.Create()
    erzeugen oder muss ich nur in der Unit der Funktion diese Restriktion irgendwie abschalten?

    Gruß Docean


    P.S.: Der Rückgabewert interessiert mich erstmal nicht Er springt ja leider nicht einmal in die Funktion


    //edit:
    Was soll ich dazu noch sagen
     
  5. 26. Juni 2012
    AW: Delphi - Funktion aus der Klasse einer anderen Unit nutzen

    Genau, einfach vorher ein Objekt erzeugen und darauf die Funktion aufrufen. Und nicht irgendwo, sondern bevor du die Funktion aufrufst

    Ich hab mich vor 3 Jahren mal um eine Ausbildung als Entwickler in einem größeren Betrieb beworben, die für Unternehmen in der Holzindustrie von Office über Buchhaltung bis hin zu hardwarenaher Programmierung alles in Delphi machen. Scheint noch vereinzelt im Einsatz zu sein.
     
  6. 26. Juni 2012
    AW: Delphi - Funktion aus der Klasse einer anderen Unit nutzen

    Nunja...
    Durch kleine aber feine Abänderungen springt das ganze Ding schon an
    Ich danke euch, BW`s sind natürlich raus und wenn ich doch noch hängen bleibe, dann freue ich mich wieder auf so kompetente Hilfe.

    Code:
    var Converter: TUTMLLConverter;
    Converter := TUTMLLConverter.Create();
    Converter.UTMtoLL(Norden,Osten,Zone);
    Gruß Docean
     
    1 Person gefällt das.
  7. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.