unimplemented und typen und var

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Mathias
Beiträge: 6955
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

unimplemented und typen und var

Beitrag von Mathias »

Bei proceduren und functiuon kann man einfach sowas machen:

Code: Alles auswählen

procedure Test; unimplemented;
Gibt es sowas auch für typen,, in Form von sowas ?

Code: Alles auswählen

type 
  TTest = Pointer; unimplemented;
Oder das wenigsten eine Warnung kommt ?
Zuletzt geändert von Mathias am Mo 12. Mai 2025, 18:05, insgesamt 1-mal geändert.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
Zvoni
Beiträge: 396
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit
Wohnort: BW

Re: unimplemented und typen

Beitrag von Zvoni »

So wie ich das verstehe, gibt es das für "Types" nicht.
Ein "Type" ist ein Type. Ob du ihn benutzt oder nicht

https://www.freepascal.org/docs-html/ref/refse5.html
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1650
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: unimplemented und typen

Beitrag von fliegermichl »

Ich kannte unimplemented noch gar nicht. Wie kann ich das verwenden?
Ich habe eine function u2test unimplmented im interface von unit2.pas definiert und unit2 in die uses Liste vonn unit1 eingefügt.

Das lässt sich nicht kompilieren weil u2test ja nicht implementiert ist. Wozu also dieses unimplemented Wort?

icho2099
Beiträge: 48
Registriert: Fr 21. Feb 2020, 19:17
OS, Lazarus, FPC: Win10/64
CPU-Target: 64 Bit
Wohnort: Osterholz-Scharmbeck

Re: unimplemented und typen

Beitrag von icho2099 »


Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1650
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: unimplemented und typen

Beitrag von fliegermichl »

icho2099 hat geschrieben: Mo 12. Mai 2025, 09:27 https://www.freepascal.org/docs-html/ref/refse5.html
Die Seite hatte ich schon gesehen. Es beantwortet meine Frage aber nicht. Der Compiler meckert über die fehlende Forward Deklaration. Wozu also das keyword unimplemented?

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6848
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: unimplemented und typen

Beitrag von af0815 »

fliegermichl hat geschrieben: Mo 12. Mai 2025, 10:05
icho2099 hat geschrieben: Mo 12. Mai 2025, 09:27 https://www.freepascal.org/docs-html/ref/refse5.html
Die Seite hatte ich schon gesehen. Es beantwortet meine Frage aber nicht. Der Compiler meckert über die fehlende Forward Deklaration. Wozu also das keyword unimplemented?
Es ist nur eine Hint-Direktive. Der Code muss zumindest mal als Stub korrekt sein - zB. leerer Rumpf, dann kann man den Hint verwenden das man die Implementierung später nicht vergisst.
Genaugenommen kann man das auch mit ToDo's gelöst werden, So sieht man aber gleich in den Compiler Hints was los ist.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1650
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: unimplemented und typen

Beitrag von fliegermichl »

af0815 hat geschrieben: Mo 12. Mai 2025, 11:04
fliegermichl hat geschrieben: Mo 12. Mai 2025, 10:05
icho2099 hat geschrieben: Mo 12. Mai 2025, 09:27 https://www.freepascal.org/docs-html/ref/refse5.html
Die Seite hatte ich schon gesehen. Es beantwortet meine Frage aber nicht. Der Compiler meckert über die fehlende Forward Deklaration. Wozu also das keyword unimplemented?
Es ist nur eine Hint-Direktive. Der Code muss zumindest mal als Stub korrekt sein - zB. leerer Rumpf, dann kann man den Hint verwenden das man die Implementierung später nicht vergisst.
Genaugenommen kann man das auch mit ToDo's gelöst werden, So sieht man aber gleich in den Compiler Hints was los ist.
Ah jetzt verstehe ich das. Danke für die Erklärung. Die Implementation muss also schon vorhanden sein, kann aber leer sein und man bekommt den Hinweis.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1650
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: unimplemented und typen

Beitrag von fliegermichl »

Hab's grad mal ausprobiert. Das erzeugt sogar eine Warnung. Dann geht das nicht in der Flut von Hints und Notes verloren.
Gut zu wissen.

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2822
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: unimplemented und typen

Beitrag von m.fuchs »

An dieser Stelle noch ein Hinweis auf die ENotImplemented-Exception, die ich da sehr gerne zusätzlich mit einsetze:

Code: Alles auswählen

program Project1;
{$MODE ObjFpc}
{$H+}

uses
  Classes, SysUtils;


function Add(A, B: Int64): Int64; unimplemented;
begin
  raise ENotImplemented.Create('Please implement me.');
end;

begin
  WriteLn(Add(1, 2));
end.
Damit fällt dann auch auf, dass hier etwas fehlt. Beispielsweise bei den Unit-Tests.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

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

Re: unimplemented und typen

Beitrag von Mathias »

Zvoni hat geschrieben: Mo 12. Mai 2025, 08:02 So wie ich das verstehe, gibt es das für "Types" nicht.
Ein "Type" ist ein Type. Ob du ihn benutzt oder nicht

https://www.freepascal.org/docs-html/ref/refse5.html
Danke dies hat mir weiter geholfen.

So sieht man auf den ersten Blick, wen man diese Methoden einbinden will, das etwas nicht io. ist.
Wen man es nur auskommandiert, geht die Sucherrei los.

So sieht es jetzt in meinen Sourcen aus, so sieht man auf den ersten Blick, das man eine Alternative Funktionen nehmen muss.
Als Info lass ich noch die Kommentare drin.

Code: Alles auswählen

  //#define evas_object_size_hint_fill_set   evas_object_size_hint_align_set
  //#define evas_object_size_hint_fill_get   evas_object_size_hint_align_get
  //#define evas_object_size_hint_expand_set evas_object_size_hint_weight_set
  //#define evas_object_size_hint_expand_get evas_object_size_hint_weight_get 

var
  evas_object_size_hint_fill_set: procedure unimplemented;
  evas_object_size_hint_fill_get: procedure unimplemented;
  evas_object_size_hint_expand_set: procedure unimplemented;
  evas_object_size_hint_expand_get: procedure unimplemented;
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten