Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Fehlermeldung bei begin und then (https://www.delphipraxis.net/122991-fehlermeldung-bei-begin-und-then.html)

foerster7892 25. Okt 2008 13:48


Fehlermeldung bei begin und then
 
Hab mal noch ne Frage heute:
Ich bekomme hier ne ganze Reihe an Fehlermeldungen rein

[Fehler] Unit3.pas(49): E2029 Ausdruck erwartet, aber 'BEGIN' gefunden
[Warnung] Unit3.pas(50): W1019 FOR-Schleifenvariable muss eine einfache lokale Variable sein
[Fehler] Unit3.pas(57): E2029 ':=' erwartet, aber '=' gefunden
[Fehler] Unit3.pas(62): E2029 'END' erwartet, aber 'THEN' gefunden
[Warnung] Unit3.pas(170): W1019 FOR-Schleifenvariable muss eine einfache lokale Variable sein
[Warnung] Unit3.pas(172): W1019 FOR-Schleifenvariable muss eine einfache lokale Variable sein
[Fataler Fehler] VierGewinnt.dpr(5): F2063 Verwendete Unit 'Unit3.pas' kann nicht compiliert werden

sehe aber nciht was ich falsch gemacht habe:

Delphi-Quellcode:
procedure Kontrolle(const Target: TStringgrid);
var a, b :integer;
begin
  y:=-1;
  if
    begin //<-- das unterstreicht er rot
      For x := 1 to 6 do
      begin
        For a := 1 to 4 do
        begin
          For b := 1 to 4 do
          begin
            y:=a+b;
            Target.cells[x,y]=IntToStr(Spieler);
          end;
        end;
      end;
    end
  then //<-- und das
    showmessage('Spieler' +IntToStr(Spieler) +'hat gewonnen!'));


end;

könnte bitte nochmal wer sein Wissen mit mir teilen???

turboPASCAL 25. Okt 2008 13:51

Re: Fehlermeldung bei begin und then
 
Delphi-Quellcode:
procedure Kontrolle(const Target: TStringgrid);
var a, b :integer;
begin
  y:=-1;
  if //  hier fehlt die Bedingung//
    begin //

Delphi-Quellcode:
procedure ...
begin
  if a = b then
  begin
    // Ja, a = b
  end else
  begin
   //nein, a ist ungleich b
  end;
end;

DeddyH 25. Okt 2008 13:51

Re: Fehlermeldung bei begin und then
 
Schleifen in einer If-Abfrage? Was soll das denn werden?

foerster7892 25. Okt 2008 13:54

Re: Fehlermeldung bei begin und then
 
Delphi-Quellcode:
begin //<-- das unterstreicht er rot
      For x := 1 to 6 do
      begin
        For a := 1 to 4 do
        begin
          For b := 1 to 4 do
          begin
          y:=a+b;
          Target.cells[x,y]=IntToStr(Spieler);//<-- wenn das bei jedem Schleifendurchlauf wahr ist soll er weiter machen(Bedingung)
          end;
        end;
      end;
    end
das gekennzeichnete ist die bedingung bei mir

foerster7892 25. Okt 2008 13:56

Re: Fehlermeldung bei begin und then
 
falls das mit der Schleife im if nicht geht

könnte ich dann nen Unterprogaufruf im If machen praktisch alles ins UP packen und dann das da aufrufen???

jfheins 25. Okt 2008 14:06

Re: Fehlermeldung bei begin und then
 
Ja, das nennt sich "Funktion mit Rückgabewert Boolean" ;)

Oder du definierst vorher ne extra Boolean-Variable, machst deine Schleifen und prüfst dann diese Variable ;)

Helmi 25. Okt 2008 14:10

Re: Fehlermeldung bei begin und then
 
Machs halt so:

Delphi-Quellcode:
procedure Kontrolle(const Target: TStringgrid);
var a, b :integer;
    gefunden: Boolean;
begin
  y:=-1;
  gefunden := false;

  begin
    For x := 1 to 6 do
      begin
        For a := 1 to 4 do
          begin
            For b := 1 to 4 do
              begin
                y:=a+b;
                gefunden := Target.cells[x,y] = IntToStr(Spieler);

                If gefunden then
                  break;
              end;
            If gefunden then
              break;
          end;
        If gefunden then
          break;
      end;
  end
 
  If not gefunden then
    showmessage('Spieler' +IntToStr(Spieler) +'hat gewonnen!'));
end;
[Edit]
aus dem Stregreif geschrieben, kann leicht fehlerhaft sein....

foerster7892 25. Okt 2008 14:33

Re: Fehlermeldung bei begin und then
 
thx helmi und auch allen anderen danke

Delphi-Quellcode:
procedure Kontrolle(const Target: TStringgrid);
var a, b, r, richtig :integer;
    gefunden :boolean;
begin
  y:=-1;

    begin
      For r := 1 to 6 do
      begin
        For a := 1 to 4 do
        begin
          richtig:=0;
          For b := 1 to 4 do
          begin
            y:=a+b;
            gefunden:=Target.cells[r,y]=IntToStr(Spieler);
            if
              gefunden=true
            then
              richtig:=richtig+1
          end;
          if
            richtig=4
          then
            break;
        end;
        if
          richtig=4
        then
          break;
      end;
      if
        richtig=4
      then
        break;
    end;

  if
    richtig=4
  then
    showmessage('Spieler' +IntToStr(Spieler) +'hat gewonnen!');


end;
das scheint jetzt erstmal zu funzen aber jetzt bekomme ich immer ne Fehlermeldung

"Zugriffsverletzung bei Addresse 07FF0652 in Modul 'dcc90.dll'. Lesen von Adresse 00000000." (8mal 0)



was heißt das jetzt?????

jfheins 25. Okt 2008 14:46

Re: Fehlermeldung bei begin und then
 
Du hast kein Stringgrig übergeben, sondern nil.

Lass das Target weg und schreib einfach Form1.Stringgrid1... ;)

Helmi 25. Okt 2008 14:51

Re: Fehlermeldung bei begin und then
 
Auch wenn es nichts mit deiner Fehlermeldung zu tun hat,
aber ändere:
Delphi-Quellcode:
If gefunden=true then
in
Delphi-Quellcode:
If gefunden then
das ist sauberer.

Es gab darüber auch schon einige Threads....


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:39 Uhr.
Seite 1 von 3  1 23      

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