Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Inkompatible Typen (https://www.delphipraxis.net/91619-inkompatible-typen.html)

greenkohl23 7. Mai 2007 23:16


Inkompatible Typen
 
Hallo Leutz ich hoff ihr könnt mir helfen nach ner ganze weile Delphi am Stück seh ich den Fehler einfach nich.

Delphi-Quellcode:
Var ziehung,Tipp : Array[1..6] of Extended;
Anzahl,Nummern :Integer;
Zahl : extended;
richtig: Integer;
vorhanden : boolean;
Visible: Boolean;

begin
if not ((1<Tipp) and (Tipp>49)) then Kommentar.Caption:='ungültige Eingabe';
end;
hinter dem ersten Tipp sagt er schon nach der Klammer Inkompatible Typen woran liegts?

mfg greenkohl

[edit=SirThornberry]Code-Tags durch Delphitags ersetzt - Mfg, SirThornberry[/edit]

omata 7. Mai 2007 23:19

Re: Inkompatible Typen
 
Weil Tipp ein Array ist.

greenkohl23 7. Mai 2007 23:36

Re: Inkompatible Typen
 
das heißt was muss ich tun, damit ich es so ähnlich gestalten kann?

Luckie 7. Mai 2007 23:44

Re: Inkompatible Typen
 
Warum ist das Array überhaupt von Datentyp Extended?
Zitat:

Zitat von Lottofee
Die Gewinnzahlen von heute:
5 10 8,79 42 1,25 25,99

:shock:

Was willst du mit der Abfrage erreichen?

mojo777 7. Mai 2007 23:49

Re: Inkompatible Typen
 
Hi, also ganz eindeutig ist es nicht, was du da machen willst :)
sonst würde wohl auch der compiler es greifen... aber ich versuch mal:
Delphi-Quellcode:
var i,minWert, maxWert:Integer;
begin
minWert:=1;
maxWert:=49;
for i:=1 to Length(Tipp) do
  begin
  if Tipp[i-1]<minWert then minWert:=Tipp[i-1];
  if Tipp[i-1]>maxWert then maxWert:=Tipp[i-1];
  end;
if (minWert<1) or (maxWert>49) then showmessage('Ungüueltige Eingabe...');
end;
ok?

greenkohl23 8. Mai 2007 00:22

Re: Inkompatible Typen
 
ich poste euch einfach mal den kompletten quelltext.

Delphi-Quellcode:
unit Unit1;

interface

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

type
TForm1 = class(TForm)
       Label1: TLabel;
      Button1: TButton;
      zahl1: TEdit;
      zahl2: TEdit;
      zahl3: TEdit;
      zahl4: TEdit;
      zahl5: TEdit;
      zahl6: TEdit;
      Richtige: TEdit;
      Label2: TLabel;
      Label3: TLabel;
      Kommentar: TLabel;
      Tipp1: TEdit;
      Tipp2: TEdit;
      Tipp3: TEdit;
      Tipp4: TEdit;
      Tipp5: TEdit;
      Tipp6: TEdit;
      Neu: TButton;
    Label4: TLabel;

procedure Button1Click(Sender: TObject);
procedure Tipp1Change(Sender: TObject);
procedure Button2Click(Sender: TObject);
    procedure NeuClick(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;

var
Form1: TForm1;

implementation
{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);

Var ziehung,Tipp : Array[1..6] of Extended;
Anzahl,Nummern :Integer;
Zahl : extended;
richtig: Integer;
vorhanden : boolean;
Visible: Boolean;
i : integer;
minWert, maxWert:extended;

begin
minWert:=1;
maxWert:=49;
for i:=1 to Length(Tipp) do
  begin
  if Tipp[i-1]<minWert then minWert:=Tipp[i-1];
  if Tipp[i-1]>maxWert then maxWert:=Tipp[i-1];
  end;
if (minWert<1) or (maxWert>49) then showmessage('Ungüueltige Eingabe...') else
begin
ziehung[1]:= 1+random(49);
Anzahl:=2;
Repeat
Zahl:= 1+random(49);
Nummern:=1;
vorhanden:=false;
Repeat
If Zahl <> ziehung[Nummern] then
Nummern:=Nummern+1 else vorhanden:=true;
Until (Anzahl=Nummern) or vorhanden;
If not vorhanden then
Begin
ziehung[Anzahl]:=Zahl;
Anzahl:=Anzahl+1;
end;

Until Anzahl > 6;
zahl1.text:=Floattostr(ziehung[1]);
zahl2.text:=Floattostr(ziehung[2]);
zahl3.text:=Floattostr(ziehung[3]);
zahl4.text:=Floattostr(ziehung[4]);
zahl5.text:=Floattostr(ziehung[5]);
zahl6.text:=Floattostr(ziehung[6]);
Tipp[1]:=Strtofloat(Tipp1.text);
Tipp[2]:=Strtofloat(Tipp2.text);
Tipp[3]:=Strtofloat(Tipp3.text);
Tipp[4]:=Strtofloat(Tipp4.text);
Tipp[5]:=Strtofloat(Tipp5.text);
Tipp[6]:=Strtofloat(Tipp6.text);
richtig:=0;
For Nummern:=1 to 6 do
For Anzahl:=1 to 6 do
If ziehung[Nummern] = Tipp[Anzahl] then
richtig:=richtig + 1;
If richtig < 2 then Kommentar.caption:='Miserable Leistung';
If richtig = 2 then Kommentar.caption:='Naja wenigstens etwas!';
If richtig > 2 then Kommentar.caption:='Du kommst dem Ziel näher..';
If richtig > 4 then Kommentar.caption:='Ich denke das kann was werden bei dir!!!';
If richtig = 6 then Kommentar.caption:='Du hast alle übertroffen die Million is dein!!';
Richtige.text:=Floattostr(richtig);
Kommentar.Visible:=true;
end;
end;

procedure TForm1.Tipp1Change(Sender: TObject);
begin
Kommentar.Visible:=false;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
close
end;
procedure TForm1.NeuClick(Sender: TObject);
begin
zahl1.text:='';
zahl2.text:='';
zahl3.text:='';
zahl4.text:='';
zahl5.text:='';
zahl6.text:='';
Tipp1.text:='';
Tipp2.text:='';
Tipp3.text:='';
Tipp4.text:='';
Tipp5.text:='';
Tipp6.text:='';
Richtige.Text:='';
Kommentar.Visible:=false;
end;

end.
Das is ja schon mal ganz gut, nur das er jetzt auch richtige Werte als ungültige Eingabe erkennt und nicht weiter geht. Wo liegt jetzt der Fehler, denn Werte zwischen 1-49 sollte er als richtig erkenn und nich als falsch.

Bitte nochmals um eure Hilfe.

thx für die schnellen Postings

Danke für eure schnelle hilfe.

[edit=SirThornberry]code-tags durch delphi-tags ersetzt - Mfg, SirThornberry[/edit]

Luckie 8. Mai 2007 00:30

Re: Inkompatible Typen
 
Aber warum Lottozahlen Fließkommazahlen sind bleibt mir irgendwie verschlossen. Desweiteren solltest du deinen Quellcoe mal etwas besser formatieren, das kann ja keiner lesen.

greenkohl23 8. Mai 2007 00:35

Re: Inkompatible Typen
 
entschuldigung für die unordnung, aber wer kein plan hat macht es halt nach reihenfolge und so seh ich nun mal durch. Also bitte nich böse sein!

Mackhack 8. Mai 2007 03:28

Re: Inkompatible Typen
 
Zitat:

Zitat von greenkohl23
entschuldigung für die unordnung, aber wer kein plan hat macht es halt nach reihenfolge und so seh ich nun mal durch. Also bitte nich böse sein!

Aber hier hatteste n Plan oder nicht?

Delphi-Quellcode:
[...]
for i:=1 to Length(Tipp) do
  begin
  if Tipp[i-1]<minWert then minWert:=Tipp[i-1];
  if Tipp[i-1]>maxWert then maxWert:=Tipp[i-1];
  end;
if
[...]
Hier mal dein Code formatiert in Delphi Tags. Hoffe ich habe am Ende deiner langen Procedure nicht abgekackt da ich es in Notepad gemacht habe:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Var
  Ziehung, Tipp: Array[1..6] of Extended;
  Anzahl, Nummern: Integer;
  Zahl: Extended;
  Richtig: Integer;
  Vorhanden: Boolean;
  Visible: Boolean;
  I: Integer;
  MinWert, MaxWert: Extended;
begin
  MinWert:= 1;
  MaxWert:= 49;
  for I := 1 to Length(Tipp) do
  begin
    if ( Tipp[I - 1] < MinWert ) then
    begin
      MinWert := Tipp[I - 1];
      if ( Tipp[I - 1] > MaxWert ) then
      begin
        MaxWert := Tipp[I - 1];
      end;
      if ( (MinWert < 1) or (MaxWert > 49) ) then
      begin
        ShowMessage('Ungüueltige Eingabe...');
      end
      else
      begin
        Ziehung[1] := 1 + Random(49);
        Anzahl:=2;
        Repeat
          Zahl := 1 + Random(49);
          Nummern := 1;
          Vorhanden := False;
          Repeat
            if ( Zahl <> Ziehung[Nummern] ) then
            begin
              Nummern := Nummern + 1;
            end
            else
            begin
              Vorhanden := True;
            end;
          Until ( (Anzahl = Nummern) or Vorhanden );
        if ( not Vorhanden ) then
        begin
          Ziehung[Anzahl] := Zahl;
          Anzahl := Anzahl + 1;
        end;
      Until ( Anzahl > 6 );
      end;
    end;
    Zahl1.Text := FloatToStr(Ziehung[1]);
    Zahl2.Text := FloatToStr(Ziehung[2]);
    Zahl3.Text := FloatToStr(Ziehung[3]);
    Zahl4.Text := FloatToStr(Ziehung[4]);
    Zahl5.Text := FloatToStr(Ziehung[5]);
    Zahl6.Text := FloatToStr(Ziehung[6]);
    Tipp[1] := StrToFloat(Tipp1.Text);
    Tipp[2] := StrToFloat(Tipp2.Text);
    Tipp[3] := StrToFloat(Tipp3.Text);
    Tipp[4] := StrToFloat(Tipp4.Text);
    Tipp[5] := StrToFloat(Tipp5.Text);
    Tipp[6] := StrToFloat(Tipp6.Text);
    Richtig := 0;
    for Nummern := 1 to 6 do
    begin
      for Anzahl := 1 to 6 do
      begin
        if ( Ziehung[Nummern] = Tipp[Anzahl] ) then
        begin
          Richtig := Richtig + 1;
          if ( Richtig < 2 ) then
          begin
            Kommentar.Caption := 'Miserable Leistung';
          end;
          if ( Richtig = 2 ) then
          begin
            Kommentar.Caption := 'Naja wenigstens etwas!';
          end;
          if ( Richtig > 2 ) then
          begin
            Kommentar.Caption := 'Du kommst dem Ziel näher..';
          end;
          if ( Richtig > 4 ) then
          begin
            Kommentar.Caption := 'Ich denke das kann was werden bei dir!!!';
          end;
          if ( Richtig = 6 ) then
          begin
            Kommentar.Caption := 'Du hast alle übertroffen die Million is dein!!';
          end;
        end;
        Richtige.Text := FloatToStr(Richtig);
        Kommentar.Visible := True;
      end;
    end;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Close;
end;

procedure TForm1.NeuClick(Sender: TObject);
begin
  Zahl1.Text := '';
  Zahl2.Text := '';
  Zahl3.Text := '';
  Zahl4.Text := '';
  Zahl5.Text := '';
  Zahl6.Text := '';
  Tipp1.Text := '';
  Tipp2.Text := '';
  Tipp3.Text := '';
  Tipp4.Text := '';
  Tipp5.Text := '';
  Tipp6.Text := '';
  Richtige.Text := '';
  Kommentar.Visible := False;
end;

procedure TForm1.Tipp1Change(Sender: TObject);
begin
  Kommentar.Visible := False;
end;

end.

DP-Maintenance 8. Mai 2007 05:28

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Die Delphi-IDE" nach "Object-Pascal / Delphi-Language" verschoben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:40 Uhr.
Seite 1 von 4  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz