Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   FreePascal (https://www.delphipraxis.net/74-freepascal/)
-   -   "identifier" expected but "BEGIN" found (https://www.delphipraxis.net/190787-identifier-expected-but-begin-found.html)

F1r3man 8. Nov 2016 08:21


"identifier" expected but "BEGIN" found
 
Hallo, ich bin relativ unerfahren mit freePascal.
Bei der Arbeit mit meinem Projekt, bin auf ein Problem gestoßen, kann nur leider die Lösung nicht finden :(

Hier einmal der Fehler:
Zitat:

obj_colorfilter.pas(15,1) Fatal: Syntax error, "identifier" expected but "BEGIN" found
Der Fehler entsteht bei dem ersten 'begin'.

und hier der quelltext:
Delphi-Quellcode:
unit obj_colorfilter;
interface
uses
  Classes, SysUtils, Graphics;

type ColorFilter = Object
//allgemeine Variebelen (private)
private
  filterColor: TColor;
  toleranzRed, toleranzYellow, toleranzBlue: Integer;

function start (const bmp : TBitmap) : TBitmap;
  //bitmap Koordinaten
  var x, y: Integer;
      maches: Boolean;
begin
  //navigation in der Bitmap
  for x:= 0 to bmp.Width-1 do
  begin
    for y:= 0 to bmp.Height-1 do
    begin
      matches:= false;
      //filtern der Farbe in Verbindung mit der Toleranz:
      color:= bmp.Canvas.Pixels(x, y);
      if(Red(color) > Red(filterColor)-toleranzRed & Red(color) < Red(filterColor)+toleranzRed)
      begin
        color:= bmp.Canvas.Pixels(x, y);
        if(Blue(color) > Blue(filterColor)-toleranzBlue & Blue(color) < Blue(filterColor)+toleranzBlue)
        begin
          color:= bmp.Canvas.Pixels(x, y);
          matches:= true;
        end;
      end;
      if(Yellow(color) > Yellow(filterColor)-toleranzYellow & Yellow(color) < Yellow(filterColor)+toleranzYellow)
        bmp.Canvas.Pixels[x, y].RGBToColor(255, 255, 255);
      else
        bmp.Canvas.pixels[x, y].RGBToColor(0, 0, 0);
    end;
  end;
  //rückgabe
  start:= bmp;
end;

//setters ----------------------------------------------------------------------
function setColor(value: TColor)
begin
  color:= valu;
end;
function setTolleranz(red, yellow, blue: Integer)
begin
  toleranzRed:= red;
  toleranzYellow:= yellow;
  toleranzBlue:= blue;
end;

//Create & destroy -------------------------------------------------------------
Constructor Init(color: TColor)
begin
  filterColor:= color;
end;
Destructor CleanUp;
end.

Ach und bevor ich es vergesse,
meine freePascal Version: FPC-Version 3.0.0

vielen Dank schon einmal im vorraus. :thumb:

uligerhardt 8. Nov 2016 08:32

AW: "identifier" expected but "BEGIN" found
 
  1. Mach doch bitte Delphi-Tags statt unspezifischer Code-Tags um deine Quellcode-Ausschnitte.
  2. Formatiere doch mal deinen Quelltext. So, wie er jetzt ist, kann man nicht erkennen, welches begin zu welchem end gehört. Und irgendsowas ist nämlich dein Problem.
Edit - mehr Genörgel: :mrgreen:
  1. Du verwendest das Keyword object. Ich würde dringend auf class umsteigen. object dient der Rückwärtskompatibilität zu DOS-Programmen.
  2. Scheinbar versuchst du, Methoden "inline" in der Klasse zu implementieren. Das geht in Delphi nicht - in FP vermutlich genausowenig.

Christian Seehase 8. Nov 2016 08:41

AW: "identifier" expected but "BEGIN" found
 
Moin,

erst einmal herzlich Willkommen hier in der Delphi-Praxis.

Die genaue Syntax von Freepascal kenne ich zwar auch nicht,
aber für mein Verständnis müsste das, verallgemeinert, so aussehen:

Delphi-Quellcode:
Type
  Typenbezeichner = class
  private
    Felddeklarationen
    Methodenköpfe
  protected
  public
    constructor
    destructor
  end;

implementation
  Implementierung der Methoden

F1r3man 8. Nov 2016 08:56

AW: "identifier" expected but "BEGIN" found
 
Zitat:

Zitat von uligerhardt (Beitrag 1352951)
  1. Mach doch bitte Delphi-Tags statt unspezifischer Code-Tags um deine Quellcode-Ausschnitte.
  2. Formatiere doch mal deinen Quelltext. So, wie er jetzt ist, kann man nicht erkennen, welches begin zu welchem end gehört. Und irgendsowas ist nämlich dein Problem.
Edit - mehr Genörgel: :mrgreen:
  1. Du verwendest das Keyword object. Ich würde dringend auf class umsteigen. object dient der Rückwärtskompatibilität zu DOS-Programmen.
  2. Scheinbar versuchst du, Methoden "inline" in der Klasse zu implementieren. Das geht in Delphi nicht - in FP vermutlich genausowenig.

Zitat:

Zitat von Christian Seehase (Beitrag 1352953)
Moin,

erst einmal herzlich Willkommen hier in der Delphi-Praxis.

Die genaue Syntax von Freepascal kenne ich zwar auch nicht,
aber für mein Verständnis müsste das, verallgemeinert, so aussehen:

Delphi-Quellcode:
Type
  Typenbezeichner = class
  private
    Felddeklarationen
    Methodenköpfe
  protected
  public
    constructor
    destructor
  end;

implementation
  Implementierung der Methoden

vielen dank, ihr beide, ich setze mich mal drann... :?
melde mich wenn ich das fertig hab xD

F1r3man 8. Nov 2016 09:11

AW: "identifier" expected but "BEGIN" found
 
danke,
ich habe jetzt einen Haufen anderer Fehler, aber endlich sind es welche die ich verstehe xD

uligerhardt 8. Nov 2016 09:32

AW: "identifier" expected but "BEGIN" found
 
:thumb::dp:

himitsu 8. Nov 2016 10:10

AW: "identifier" expected but "BEGIN" found
 
Zitat:

Delphi-Quellcode:
if(...)
begin
  ...
end;

if(...)
  ...;
else
  ...;

Wo ist das THEN?
Und vor ELSE gehört kein ;

Der ganze Code sieht nach einer schlechten Übersetzung aus C/C++ aus.

Und wie bereits erkannt, kommt der Fehler von diesem BEGIN, also Implementation im Interface, was ja nicht geht.
Zitat:

Delphi-Quellcode:
function start (const bmp : TBitmap) : TBitmap;
  //bitmap Koordinaten
  var x, y: Integer;
      maches: Boolean;
begin


Aviator 8. Nov 2016 22:20

AW: "identifier" expected but "BEGIN" found
 
Das "&" Symbol gibt es in Delphi in dem Zusammenhang nicht. Dafür benutzt du das Schlüsselwort
Delphi-Quellcode:
and
.

Delphi-Quellcode:
if ((a and b) = c) then begin
  // Do something
end;

Jim Carrey 8. Nov 2016 22:34

AW: "identifier" expected but "BEGIN" found
 
Zitat:

Zitat von Aviator (Beitrag 1353066)
Das "&" Symbol gibt es in Delphi in dem Zusammenhang nicht. Dafür benutzt du das Schlüsselwort
Delphi-Quellcode:
and
.

Delphi-Quellcode:
if ((a and b) = c) then begin
  // Do something
end;

Und immer schön Klammern verwenden wie es Aviator auch tut denn ohne geht es in Delphi nicht.
Aber der Quelltext da oben... ich bin kein professioneller Programmierer oder so und mache viele Fehler. Aber der Quelltext da oben ist ein Verbrechen :stupid:
Nicht vom Inhalt her sondern von der Syntax und vom Stil.

himitsu 9. Nov 2016 01:29

AW: "identifier" expected but "BEGIN" found
 
Ohh, daß kleine & hatte ich glatt übersehn ... tja, wie gesagt, eine schlechte C-Übersetung :lol:
[QUOTE=Jim Carrey;1353067]
Zitat:

Zitat von Aviator (Beitrag 1353066)
Das "&" Symbol gibt es in Delphi in dem Zusammenhang nicht. Dafür benutzt du das Schlüsselwort
Delphi-Quellcode:
and
.

Und bezüglich der Klammern ... dafür kann man die äußere Klammer weglassen.

Der Grund für die erwähnten nötigen Klammen:
In Delphi ist Konkator (and or xor) höherrangiger, als ein Vergleich (<>=).
AND wird vor < oder > ausgewertet und in C/C++ ist das halt andersrum.

uligerhardt 9. Nov 2016 07:34

AW: "identifier" expected but "BEGIN" found
 
Zitat:

Zitat von himitsu (Beitrag 1353068)
Ohh, daß kleine & hatte ich glatt übersehn ... tja, wie gesagt, eine schlechte C-Übersetung :lol:

Eher C# oder Java. :mrgreen:
Die Vorlage scheint mir eine Klasse mit inline implementierten Methoden gewesen zu sein. Und aus der Root-Klasse Object ist das Delphi-Schlüsselwort object geworden.

Aviator 9. Nov 2016 08:52

AW: "identifier" expected but "BEGIN" found
 
Zitat:

Zitat von Jim Carrey (Beitrag 1353067)
Zitat:

Zitat von Aviator (Beitrag 1353066)
Das "&" Symbol gibt es in Delphi in dem Zusammenhang nicht. Dafür benutzt du das Schlüsselwort
Delphi-Quellcode:
and
.

Delphi-Quellcode:
if ((a and b) = c) then begin
  // Do something
end;

Und immer schön Klammern verwenden wie es Aviator auch tut denn ohne geht es in Delphi nicht.
Aber der Quelltext da oben... ich bin kein professioneller Programmierer oder so und mache viele Fehler. Aber der Quelltext da oben ist ein Verbrechen :stupid:
Nicht vom Inhalt her sondern von der Syntax und vom Stil.

Hier geht es nicht darum, wie ich meinen SourceCode formatiere. Dafür gab es schon genügend Threads hier im Forum in denen jeder seine Meinung kundtun konnte. Wenn du unbedingt deinen Programmierstil hier zeigen oder den Stil von anderen Programmieren kritisieren willst, dann tu das in einen dieser Threads.

Jeder hat seinen eigenen Stil den er sich irgendwann mal angewöhnt hat (vielleicht auch weil er aus einer anderen Programmiersprache kommt/kam). Und wenn er dir nicht passt (und du dadurch den doch sehr kleinen Part nicht lesen kannst [dann solltest du dich auch nicht als Programmierer bezeichnen]), dann jage ihn eben durch den SourceCode Formatter von Delphi.

bcvs 9. Nov 2016 11:07

AW: "identifier" expected but "BEGIN" found
 
Zitat:

Zitat von Aviator (Beitrag 1353077)
Hier geht es nicht darum, wie ich meinen SourceCode formatiere.

Eben.

Ich denke, Jim Carreys Aussage von wegen Quellcode ist ein Verbrechen bezog sich eher auf den Quellcode im Eingangspost, nicht auf deinen 3-Zeiler.
Also: immer ruhig bleiben.

Aviator 9. Nov 2016 14:30

AW: "identifier" expected but "BEGIN" found
 
Zitat:

Zitat von bcvs (Beitrag 1353106)
Zitat:

Zitat von Aviator (Beitrag 1353077)
Hier geht es nicht darum, wie ich meinen SourceCode formatiere.

Eben.

Ich denke, Jim Carreys Aussage von wegen Quellcode ist ein Verbrechen bezog sich eher auf den Quellcode im Eingangspost, nicht auf deinen 3-Zeiler.
Also: immer ruhig bleiben.

Naja mag sein. Aber ist jetzt auch egal. War ein stressiger Tag und gestern auch. Also falls ich jemandem zu nahe getreten bin, das war nicht direkt meine Absicht.

Aber ich sehe gerade, dass der User Jim Carrey gar nicht mehr existiert. :shock:
Ich hoffe er hat sich jetzt nicht aufgrund der Lappalie vom Forum verabschiedet.

EDIT: OK. Hat wohl eher mit diesem Thread zu tun. Und nicht mit meiner Antwort. Dann bin ich ja beruhigt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:09 Uhr.

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