Einzelnen Beitrag anzeigen

YXCVBNM1

Registriert seit: 4. Dez 2010
12 Beiträge
 
#1

Problem mit Typenkompatibilität

  Alt 2. Feb 2013, 21:05
Hallo zusammen,
ich bin Programmieranfänger und habe eben versucht ein Programm zu schreiben, welches eine bliebige Zahl in ihre Primfaktoren zerlegt. Allerdings verstehe ich die Fehlermeldung nicht bzw. kann sie nicht nachvollziehen. Ich habe die Fehlermeldung im Quelltext grün makiert.



hier ist der quelltext (TurboDelphi):

Delphi-Quellcode:
unit UGUI;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    LFrage: TLabel;
    BZerlegung: TButton;
    EZahl: TEdit;
    PFaktoren: TPanel;
    function NeuePrimzahl:integer;
    procedure BZerlegungClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  a:real;
  p,z:integer;
  Primfaktoren: array of integer;

implementation

{$R *.dfm}

procedure TForm1.BZerlegungClick(Sender: TObject);
VAR nummer,m:integer;
begin
nummer:=1;
a:=strtofloat(EZahl.Text);
z:=round(a);
p:=Form1.NeuePrimzahl;
Repeat
If ((z mod p) =0) then
  begin
  z:=z/p; [COLOR="Red"]// HIER KOMMT DIE FEHLERMELDUNG [Pascal Fehler] UGUI.pas(44): E2010 Inkompatible Typen: 'Integer' und 'Extended'[/COLOR]
  Primfaktoren[nummer]:=p;
  inc(nummer);
  end
  else p:=Form1.NeuePrimzahl;

Until z=1 ;

For m:=2 to length(Primfaktoren) do
begin
PFaktoren.Caption:=PFaktoren.Caption+'*'+inttostr(Primfaktoren[m]);
end;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
p:=2;
end;

function TForm1.NeuePrimzahl:integer;
Var prim:boolean; n,p2:integer;
begin
p2:=p;
prim:=true;
Repeat
  p2:=p2+1;
  prim:=true;
  For n:=2 to (p2-1) do
    begin
    If (p2 mod n) = 0 then prim:=false;
    end;
  Until prim=true ;
result:=p2;
  end;

end.
Meiner Meinung nach haben beide Variablen den Typ integer. Ich verstehe daher die Fehlermeldung nicht. Wäre schön, wenn mir jemand helfen könnte.

  Mit Zitat antworten Zitat