AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen FreePascal "identifier" expected but "BEGIN" found

"identifier" expected but "BEGIN" found

Ein Thema von F1r3man · begonnen am 8. Nov 2016 · letzter Beitrag vom 9. Nov 2016
Antwort Antwort
Seite 1 von 2  1 2   
F1r3man

Registriert seit: 8. Nov 2016
8 Beiträge
 
#1

"identifier" expected but "BEGIN" found

  Alt 8. Nov 2016, 09:21
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.

Geändert von F1r3man ( 8. Nov 2016 um 09:53 Uhr) Grund: andere Tags / überarbeitete formatierung
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.695 Beiträge
 
Delphi 2007 Professional
 
#2

AW: "identifier" expected but "BEGIN" found

  Alt 8. Nov 2016, 09:32
  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:
  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.
Uli Gerhardt

Geändert von uligerhardt ( 8. Nov 2016 um 09:40 Uhr)
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.262 Beiträge
 
Delphi 2006 Professional
 
#3

AW: "identifier" expected but "BEGIN" found

  Alt 8. Nov 2016, 09:41
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
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
F1r3man

Registriert seit: 8. Nov 2016
8 Beiträge
 
#4

AW: "identifier" expected but "BEGIN" found

  Alt 8. Nov 2016, 09:56
  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:
  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.
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

Geändert von F1r3man ( 8. Nov 2016 um 09:59 Uhr)
  Mit Zitat antworten Zitat
F1r3man

Registriert seit: 8. Nov 2016
8 Beiträge
 
#5

AW: "identifier" expected but "BEGIN" found

  Alt 8. Nov 2016, 10:11
danke,
ich habe jetzt einen Haufen anderer Fehler, aber endlich sind es welche die ich verstehe xD
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.695 Beiträge
 
Delphi 2007 Professional
 
#6

AW: "identifier" expected but "BEGIN" found

  Alt 8. Nov 2016, 10:32
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.596 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: "identifier" expected but "BEGIN" found

  Alt 8. Nov 2016, 11:10
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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu ( 8. Nov 2016 um 11:18 Uhr)
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.588 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: "identifier" expected but "BEGIN" found

  Alt 8. Nov 2016, 23:20
Das "&" Symbol gibt es in Delphi in dem Zusammenhang nicht. Dafür benutzt du das Schlüsselwort and .

Delphi-Quellcode:
if ((a and b) = c) then begin
  // Do something
end;
  Mit Zitat antworten Zitat
Jim Carrey
(Gast)

n/a Beiträge
 
#9

AW: "identifier" expected but "BEGIN" found

  Alt 8. Nov 2016, 23:34
Das "&" Symbol gibt es in Delphi in dem Zusammenhang nicht. Dafür benutzt du das Schlüsselwort 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
Nicht vom Inhalt her sondern von der Syntax und vom Stil.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.596 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: "identifier" expected but "BEGIN" found

  Alt 9. Nov 2016, 02:29
Ohh, daß kleine & hatte ich glatt übersehn ... tja, wie gesagt, eine schlechte C-Übersetung
[QUOTE=Jim Carrey;1353067]
Das "&" Symbol gibt es in Delphi in dem Zusammenhang nicht. Dafür benutzt du das Schlüsselwort 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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +2. Es ist jetzt 20:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf