Hallo ich wollte mich ein bisschen in sachen Units schulen. Ich habe erfahren, dass ich in einer seperaten Unit alle Funktionen, Prozeduren, Variablen etc schreiben kann, die ich für ein gesamtes Programm benötige.
Auf gehts dachte ich mir und erstellte ein Formular+Unit und eine extra Unit (Unit2)
Ich habe die folgende Funktion in der Unit2 deklariert:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| unit Unit2;
interface function FinC: real;
implementation
function FinC : real; begin FinC:=3.7676; end;
end. |
wie man sieht ist die Funktion vom Typ real, da die zahl ja auch eine gebrochene Zahl ist
Nach dem Schlüsselwort implementation habe ich die Funktion als Schnittstelle für andere Programmteile angegeben.
Nun öffne ich die Unit1 und schreibe in Unit1 mit dem Schlüsselwort uses Unit2, dass die Unit2 mitverwendet werden soll und gebe auch an, dass das Label den Inhalt der Funktion ausgeben soll, die ich in der Unit2 geschrieben habe.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, System.ComponentModel, Borland.Vcl.StdCtrls;
type TForm1 = class(TForm) Button1: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); private public end;
var Form1: TForm1;
implementation {$R *.nfm} uses Unit2;
procedure TForm1.Button1Click(Sender: TObject); begin label1.caption:=FinC;
end;
end. |
Beim klicken des Buttons soll das label den Inhalt der Funktion wiedergeben. Doc leider wird das Programm aufgrund der Fehlermeldung [Pascal Fehler] Unit1.pas(30): E2010 Inkompatible Typen: 'string' und 'Double'
nicht compiliert. Der Fehlerzeiger steht in der Unit 1 auf Zeile 30 :label1.caption:=FinC;
Kann mir jemand sagen, warum es Probleme mit den Datentypen gibt?
Moderiert von
Tino: Topic aus Sonstiges (Delphi) verschoben am Fr 07.12.2007 um 13:52