Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   FreePascal (https://www.delphipraxis.net/74-freepascal/)
-   -   Umstieg aus Delphi. (https://www.delphipraxis.net/172767-umstieg-aus-delphi.html)

haderlump 22. Jan 2013 05:27

Umstieg aus Delphi.
 
Hallo zusammen
Ich bin Lazarusneuling. Ich hatte vor Jahren in Delphi ein Programm zur Steuerung einer Modelleisenbahn geschrieben (Delphi 4)
Ich wollte nun Änderungen vornehmen, und stellte fest, dass mein Delphi nicht mehr läuft. Leider ist meine Instalationsdisc beim Umzug verloren gegangen. Kurzum ich hab kein Delphi mehr.
Nun hab ich mir Lazarus herunter geladen.
Die Konvertierung nach Lazerus scheiterte, an hunderten von Fehlermeldungen. Um Lazarus bzw. FPC kennenzulernen, habe ich begonnen das Programm stufenweide neu aufzubauen. Doch selbst im Anfangsstadium komme ich nicht mehr weiter.

Jetzt mein Problem:

Quelltext:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs;

type
TForm1 = class(TForm)
private
{ private declarations }
public
{ public declarations }
type
kontakt = record
bezeichnung :string [20];
port,
kontakt :byte;
l_adresse,
// r_adresse : kt;
// signal :daten_element;
// next_kontakt :kontakt_;
typ :byte;
messzeit,auszeit,schrittgeschwindigkeit :integer;
wirkrichtung,scharf: boolean {true = links}
end;
kontakt_ = ^kontakt;
end;

var
Form1: TForm1;
kontakt2 : kontakt_;//////////////////////////////

implementation

{$R *.lfm}
begin


end.



Auf die mit ////////////// markierte Zeile bekomme ich die Fehlermeldung: Error: Identifier not found "kontakt_"

Was zum Teufel mache ich falsch, im Konsolenfenster von Pascal geht es.

Noch kurz zum Zweck des Codes:
Es soll eine Datenstruktur aufgebaut werden, in der Die Anlage beschrieben ist, so dass das "Stellwerksprogramm" entsprechend handeln kann.

PS: In Delphi lief das alte Gesamtprogramm fehlerfrei.

Gruß Fritz

Lemmy 22. Jan 2013 05:36

AW: Umstieg aus Delphi.
 
Hallo Fritz,

machen wir mal die Delphi-Tags um die Sourcen:

Delphi-Quellcode:
type
  TForm1 = class(TForm)
  private
    { private declarations }
  public
    { public declarations }
     //<--------------------
type
  kontakt = record
    bezeichnung :string [20];
    port,
    kontakt :byte;
    l_adresse,
    // r_adresse : kt;
    // signal :daten_element;
    // next_kontakt :kontakt_;
    typ :byte;
    messzeit,auszeit,schrittgeschwindigkeit :integer;
    wirkrichtung,scharf: boolean {true = links}
  end;
  kontakt_ = ^kontakt;
 
  end; //<--------------------

var
Form1: TForm1;
kontakt2 : kontakt_;//////////////////////////////

implementation
das end; vor var ist falsch. das gehört an die Stelle weiter oben, um die Klassendeklaration des Formulars abzuschließen...

jaenicke 22. Jan 2013 07:42

AW: Umstieg aus Delphi.
 
Zitat:

Zitat von Lemmy (Beitrag 1200025)
das end; vor var ist falsch. das gehört an die Stelle weiter oben, um die Klassendeklaration des Formulars abzuschließen...

Das ist dann aber nur in Lazarus falsch, in Delphi ist das so korrekt. Das Feature nennt sich nested types und gibt es in Delphi seit Version 2006.
Hilft vielleicht das Umschalten in dem Lazarusprojekt auf den Delphi-Modus?

Nebenbei sollten Typdeklarationen wie kontakt immer mit einem T beginnen um dies zu erkennen, also TKontakt. Und der Pointer darauf sollte PKontakt heißen. So ist die Namenskonvention.

Lemmy 22. Jan 2013 07:46

AW: Umstieg aus Delphi.
 
Zitat:

Zitat von jaenicke (Beitrag 1200031)
Zitat:

Zitat von Lemmy (Beitrag 1200025)
das end; vor var ist falsch. das gehört an die Stelle weiter oben, um die Klassendeklaration des Formulars abzuschließen...

Das ist dann aber nur in Lazarus falsch, in Delphi ist das so korrekt. Das Feature nennt sich nested types und gibt es in Delphi seit Version 2006.
Hilft vielleicht das Umschalten in dem Lazarusprojekt auf den Delphi-Modus?

ah stimmt.. da war mal was... ist halt so, wenn man immer noch bei Delphi 7 fest hängt :-)

Aber dann eine Frage an dich: Wenn das ein nestet Type sein soll, dann ist die Deklaration von kontakt2 aber falsch bzw. die Fehlermeldung korrekt - denn als nestet Type sollte der dann an der Stelle doch nicht bekannt sein oder?

sahimba 22. Jan 2013 07:47

AW: Umstieg aus Delphi.
 
Zitat:

Zitat von jaenicke (Beitrag 1200031)
Das Feature nennt sich nested types und gibt es in Delphi seit Version 2006.

Er schreibt aber auch, dass seine alte Applikation Delphi 4 basierend ist. Und es hat nicht den Anschein, als wolle er solche (nicht mehr ganz so) neuartigen Features verwenden. Von daher ist der Einwurf sicher berechtigt, dürfte aber in der Folge zu gänzlich neuen Problemen (Scope etc.) beim Ersteller führen.

haderlump 22. Jan 2013 08:55

AW: Umstieg aus Delphi.
 
Hallo Lemmy
Super, danke, jetzt geht es.
Na das kommt halt davon, wenn man was macht, von dem man nicht allzuviel versteht.
Na ja, irgendwann werd ich vielleicht auch einen einigermaßenen Durchblick bekommen.

Ich hab jetzt mal angefangen, das alte Programm in kleinen Portionen in das neue Projekt zu imoprtieren, und ich muss sgaen es ist fast unheimlich, wie geschmeidig das jetzt geht.

Sahimba und Jaenike.
Danke auch euch für die Hilfe, und Komentare.

Ich werde mich mental ganz von Delphi verabschieden. Lazarus wird mich wahrscheinlich überdauern, (ich bin schon fast 60 Jahre alt) bei Delphi bin ich mir da nicht so sicher.
Im Professionalen Bereich geht doch alles mehr auf C++ hin, und wenn mit Delphi nicht mehr so viel Geld verdient werden kann, könnte es sein, das es irgendwann einmal eingestampft wird. Oder es braucht ja blos die Firma pleite machen.

JamesTKirk 22. Jan 2013 09:00

AW: Umstieg aus Delphi.
 
Zitat:

Zitat von jaenicke (Beitrag 1200031)
Zitat:

Zitat von Lemmy (Beitrag 1200025)
das end; vor var ist falsch. das gehört an die Stelle weiter oben, um die Klassendeklaration des Formulars abzuschließen...

Das ist dann aber nur in Lazarus falsch, in Delphi ist das so korrekt. Das Feature nennt sich nested types und gibt es in Delphi seit Version 2006.

Free Pascal unterstützt seit 2.4.2 ebenfalls nested types. Der Code Auszug von haderlump würde auch in einem aktuellen Delphi nicht kompilieren, da der Typ
Delphi-Quellcode:
kontakt_
außerhalb von
Delphi-Quellcode:
TForm1
als
Delphi-Quellcode:
TForm1.kontakt_
angesprochen werden muss.

Gruß,
Sven


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:43 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