Delphi-PRAXiS
Seite 2 von 4     12 34      

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)

Luckie 8. Mai 2007 09:24

Re: Inkompatible Typen
 
Zitat:

Zitat von Mackhack
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
[...]

Nein, das war der Code aus dem Thread hier. ;)

Muetze1 8. Mai 2007 10:01

Re: Inkompatible Typen
 
Zitat:

Zitat von Luckie
Nein, das war der Code aus dem Thread hier. ;)

Ja, das ist ja der Plan, der ihm vorgelegt wurde. Nun muss er nur noch den Schatz bergen...

greenkohl23 8. Mai 2007 15:02

Re: Inkompatible Typen
 
Danke Mackhack für dein Posting, aber leider geht das so nich, denn ich bekomm 3 Fehler.

Nach dem then kommt die Meldung "erwartet aber THEN gefunden"
Code:
 begin
      MinWert := Tipp[I - 1];
      if ( Tipp[I - 1] > MaxWert then
Dann nach dem RICHTIG; kommt die Meldung "Inkompatible Typen:'Integer und procedure untyped pointer or untyped parameter'"

Code:
begin
          Richtig := Inc(Richtig);
Und der letzte Fehler ist, die bei der Procedure wird gesagt: Anweisung erwartet aber Procedure gefunden
Code:
procedure TForm1.Button2Click(Sender: TObject);
begin
  Close;
end;
danke für eure Mühen

Tormentor32 8. Mai 2007 15:05

Re: Inkompatible Typen
 
Delphi-Quellcode:
if ( Tipp[I - 1] > MaxWert) then
Hast die Klammer vergessen

Delphi-Quellcode:
inc(Richtig);
Reicht aus, ist ne Prozedur

Vor dem letzten fehlt wahrscheinlich irgendwo ein "end;"

SirThornberry 8. Mai 2007 15:12

Re: Inkompatible Typen
 
@greenkohl23: Könntest du künftig bitte die delphi-tags anstelle der code-tags verwenden wenn du delphi-quelltext postest? Das lässt sich einfach besser lesen. Danke :)

Mackhack 8. Mai 2007 15:17

Re: Inkompatible Typen
 
So hab den Code mal eben in Delphi ueberarbeitet.

Es kann zumindest compiliert werden.

greenkohl23 8. Mai 2007 15:36

Re: Inkompatible Typen
 
Hi, die oben genannten Probs sind nu alle erledigt aber ein altes Problem is immer noch vorhanden.

Zitat:

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.
Und was kann ich tun, damit sich das wenigstens wieder ändert?

Hier nochmal das gesamte:
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
    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ültige 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 );
    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
          Inc(Richtig);
          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;
      end;
      Richtige.Text := FloatToStr(Richtig);
      Kommentar.Visible := True;
    end;
  end;
  end;
  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.

greenkohl23 8. Mai 2007 22:43

Re: Inkompatible Typen
 
na keiner mehr ne Idee?

Klaus01 9. Mai 2007 08:19

Re: Inkompatible Typen
 
Habe in Deinem Code mal etwas rumeditiert.

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  Tipp[0] ist in Deinem Array nicht definiert
    if ((Tipp[i] < MinWert) and (Tipp[i] > MaxWert)) then // bewegt sich der Tipp ausserhalb der Grenzen
                                                           //(würde ich schon bei der Eingabe abfangen wollen
      begin
        ShowMessage('Ungültige Eingabe...');
        break;
      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 );
        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
                Inc(Richtig);
              end;
            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;
      end;
      Richtige.Text := FloatToStr(Richtig);
      Kommentar.Visible := True;
    end;
  end;
end;
nicht getestet!!

Grüße
Klaus

greenkohl23 9. Mai 2007 14:11

Re: Inkompatible Typen
 
Danke für deinen Tipp, aber wenn ich das mache dann macht er einfach gar nix mehr. Vllt haste ja noch nen Tipp für mich freu mich über alles!!!

mfg greenkohl23


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:09 Uhr.
Seite 2 von 4     12 34      

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