AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Identifier not found -- Wo steckt der Fehler

Ein Thema von Schwalbe.Pilot · begonnen am 31. Jan 2019 · letzter Beitrag vom 6. Feb 2019
Antwort Antwort
Seite 1 von 2  1 2      
Schwalbe.Pilot

Registriert seit: 7. Dez 2018
Ort: Rheinhessen
10 Beiträge
 
FreePascal / Lazarus
 
#1

Identifier not found -- Wo steckt der Fehler

  Alt 31. Jan 2019, 08:16
Hallo zusammen,

Ich bin neu in diesem Forum, daher packt diesen Threat bitte an eine andere Stelle, wenn die aktuelle platzierung nicht passt.#
Auch bin ich neu in Pascal und daher wird dies bestimmt ein ,Aanfängerfehler sein, wo ihr euch denkt och man ist der doooooof (Bitte seht über diese Felerchen hinweg.

Zu meinem Compiler: Ich benutze Lazarus (hoffe ich bin hier im Delphi-Forum richtig) und es ist mein aller erstes Projekt damit.

So genug gequatsch hier kommt der Code:

Delphi-Quellcode:
unit DetektivwalterKohl;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Buttons;

type

  { TForm1 }

  TForm1 = class(TForm)
    Hintergrund: TSpeedButton;
    RechterPfeil: TSpeedButton;
    LinkerPfeil: TSpeedButton;
    StartKnopf: TSpeedButton;
    StartBildschirm: TSpeedButton;
    procedure LinksPfeilKlick(Sender: TObject);
    procedure Start(Sender: TObject);
    procedure StartBildschirmClick(Sender: TObject);
    procedure StartClick(Sender: TObject);
    procedure WelcherHintergrund(HintergrundZaehler:Integer);
  private

  public

  end;

var
  Form1: TForm1;
  HintergrundZaehler : Integer;


implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.StartBildschirmClick(Sender: TObject);
begin
  HintergrundZaehler := 100 ;
  StartBildschirm.Glyph.loadfromfile('Startbildschirm.bmp'); // wechsel Bild zu TrippleD-production
  StartKnopf.Visible := True;
end;

procedure TForm1.Start(Sender: TObject);
begin

end;

procedure TForm1.LinksPfeilKlick(Sender: TObject);
begin
  HintergrundZaehler := HintergrundZaehler +1 ;
  WelcherHintergrund(HintergrundZaehler);
end;

procedure WelcherHintergrund(HintergrundZaehler:Integer);
begin
     if HintergrundZaehler = 99 then;
        Hintergrund.Glyph.loadfromfile('99.bmp');
end;

procedure TForm1.StartClick(Sender: TObject);
begin
  Hintergrund.Visible := True;
  RechterPfeil.Visible := True;
  LinkerPfeil.Visible := True;
  StartKnopf.Visible := False;
  StartBildschirm.Visible := False;

end;

end.
Jetzt zum Problem: In Zeile 63 also in der Fallunterscheidung zeigt er mir "Indentifier not found "Hintergrund"" an. So wie ich Pascal bis jetzt verstehe hab ich das doch aber oben denfiniert .
Ich hoffe jemand kann mir helfen und ich kann das Programm fertigmachen.

Für eure Mühe und Zeit schon eimal vielen Dank.
Schönen Tag euch
Schwalbe.Pilot

PS.: Das Programm wir ein Spiel, genauer gesagt ein PointAndClickAdventuere, wenn ihr dafür weitere Tipps habt, ich nehme sie immer gerne
Felix

Geändert von Schwalbe.Pilot (31. Jan 2019 um 08:55 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.289 Beiträge
 
Delphi 12 Athens
 
#2

AW: Identifier not found -- Wo steckt der Fehler

  Alt 31. Jan 2019, 08:57
Willkommen...
Delphi-Quellcode:
procedure WelcherHintergrund(HintergrundZaehler:Integer);
begin
     if HintergrundZaehler = 99 then; // das ; ist zu viel :-)
        Hintergrund.Glyph.loadfromfile('99.bmp');
end;
  Mit Zitat antworten Zitat
Schwalbe.Pilot

Registriert seit: 7. Dez 2018
Ort: Rheinhessen
10 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Identifier not found -- Wo steckt der Fehler

  Alt 31. Jan 2019, 09:00
Zitat:
Delphi-Quellcode:
procedure WelcherHintergrund(HintergrundZaehler:Integer);
begin
     if HintergrundZaehler = 99 then; // das ; ist zu viel :-)
        Hintergrund.Glyph.loadfromfile('99.bmp');
end;
Hallo,

An dem ; liegt es leider nicht, das hab ich da hin gesetzt um zu testen, ob es funktioniert. Denn mir wurde mal gesagt das die meisten fehler mit dem fehlenden ';' zusammenhängen.
Felix
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Identifier not found -- Wo steckt der Fehler

  Alt 31. Jan 2019, 09:10
Im Methodenkopf fehlt das "TForm1." vor dem Methodenname.
So ist es nur eine Prozedur, die nichts mit dem Formular und den Komponenten darauf zu tun hat. Dementsprechend kennt er den Hintergrund auch nicht.
Ach ja: Das Semikolon hinter dem "then" muss trotzdem/auch weg
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Schwalbe.Pilot

Registriert seit: 7. Dez 2018
Ort: Rheinhessen
10 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Identifier not found -- Wo steckt der Fehler

  Alt 31. Jan 2019, 09:21
Im Methodenkopf fehlt das "TForm1." vor dem Methodenname.
So ist es nur eine Prozedur, die nichts mit dem Formular und den Komponenten darauf zu tun hat. Dementsprechend kennt er den Hintergrund auch nicht.
Ach ja: Das Semikolon hinter dem "then" muss trotzdem/auch weg

Dankeschön
Auf sowas sind wir zu dritt nach 2 Stunden suchen nicht gekommen
Ist das ein typische Anfängerfehler?
Auf jeden Fall danke für die Hilfe.

Ps: Ich lasse den Threat mal offen, falls noch solche Fehler kommen.
Felix
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.610 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Identifier not found -- Wo steckt der Fehler

  Alt 31. Jan 2019, 09:24
Im Methodenkopf fehlt das "TForm1." vor dem Methodenname.
So ist es nur eine Prozedur, die nichts mit dem Formular und den Komponenten darauf zu tun hat. Dementsprechend kennt er den Hintergrund auch nicht.
Ach ja: Das Semikolon hinter dem "then" muss trotzdem/auch weg

Dankeschön
Auf sowas sind wir zu dritt nach 2 Stunden suchen nicht gekommen
Ist das ein typische Anfängerfehler?
Auf jeden Fall danke für die Hilfe.
Naja, ich denke den Fehler haben wir alle mal gemacht. Ob es jetzt ein typischer Anfängerfehler ist will ich jetzt mal nicht beantworten.
Mich wundert nur, dass dein Compiler keinen Fehler gemeldet hatte, da du oben die procedure bereits bekannt gemacht, sie aber nicht implementiert hattest. (Weil das TForm1 fehlte)

Ps: Ich lasse den Threat mal offen, falls noch solche Fehler kommen.
Ich sags mal so: Neuer Fehler --> neuer Thread
  Mit Zitat antworten Zitat
31. Jan 2019, 09:41
Dieses Thema wurde am "31. Jan 2019, 10:41 Uhr" von "Luckie" aus dem Forum "Programmieren allgemein" in das Forum "Object-Pascal / Delphi-Language" verschoben.
Andreas L.

Registriert seit: 23. Mai 2011
Ort: Furth im Wald
308 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Identifier not found -- Wo steckt der Fehler

  Alt 31. Jan 2019, 10:33
procedure WelcherHintergrund(HintergrundZaehler:Integer);
begin
if HintergrundZaehler = 99 then; // das ; ist zu viel
Hintergrund.Glyph.loadfromfile('99.bmp');
end;
Du solltest immer absolute Pfade verwenden. Ohne den Pfad wird die Datei aus dem aktuellen Arbeitsverzeichnis geladen. Das kann sich aber während der Laufzeit ändern.

Wenn das Bild im EXE-Ordner ist kannst du mit ParamStr(0) bzw. Application.Exename darauf zugreifen.

Delphi-Quellcode:
  // Pfad + Dateiname der EXE ermitteln (z. B. C:\Programme\meineapp.exe)
  FileName := Application.ExeName;
  // ODER
  FileName := ParamStr(0);

  // Den Pfad aus FileName extrahieren. Ergibt dann C:\Programme\
  Path := ExtractFilePath(FileName);
Delphi-Quellcode:
procedure WelcherHintergrund(HintergrundZaehler:Integer);
var
  FileName: String;
  Path: String;
begin
  FileName := Application.ExeName;
  Path := ExtractFilePath(FileName);

  if HintergrundZaehler = 99 then;
    Hintergrund.Glyph.loadfromfile(Path + '99.bmp');
end;
Wenn du den Pfad zu anderen Verzeichnissen ermitteln möchtest, kannst du die Funktionen SpecialDirectory, SHGetFolderPath oder GetKnownFolderPath verwenden. Diese geben dann Pfade wie z. B. Windows-Ordner, Video-Ordner, .... zurück.

Delphi-Quellcode:
function GetSpecialDirectory(ACSIDL: Integer; AHandle: Cardinal = 0): String;
const
  SHGFP_TYPE_CURRENT = 0;
var
  APIResult: HRESULT;
  Buffer: Array[0 .. MAX_PATH - 1] of WCHAR;
begin
  Result := '';

  APIResult := SHGetFolderPathW(AHandle, ACSIDL, 0, SHGFP_TYPE_CURRENT, Buffer);

  if APIResult = S_OK then
  begin
    Result := WideString(Buffer);
    Result := IncludeTrailingPathDelimiter(Result);
    Result := Trim(Result);
  end;
end;
Andreas Lauß
Blog

Geändert von Andreas L. (31. Jan 2019 um 10:40 Uhr)
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.379 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Identifier not found -- Wo steckt der Fehler

  Alt 31. Jan 2019, 10:42
Du solltest immer absolute Pfade verwenden. Ohne den Pfad wird die Datei aus dem aktuellen Arbeitsverzeichnis geladen. Das kann sich aber während der Laufzeit ändern.
Das finde ich nicht. In dem Stand in dem er sich gerade befindet (so meine Einschätzung) sollte er sich NOCH nicht mit so was beschäftigen. Das jetzt wirkt nur abschreckend.
Wichtiger finde ich jetzt dass er Spass dabei hat und der Lehrer zufrieden ist.

Wenn man dagegen eine ernsthafte Anwendung macht, dann muss man sich um das (u.v.a.m.) auch kümmern.
  Mit Zitat antworten Zitat
Andreas L.

Registriert seit: 23. Mai 2011
Ort: Furth im Wald
308 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Identifier not found -- Wo steckt der Fehler

  Alt 31. Jan 2019, 12:45
Im Stand in dem er sich gerade befindet (so meine Einschätzung) sollte er sich NOCH nicht mit so was beschäftigen. Das jetzt wirkt nur abschreckend.
Ich finde man sollte es lieber gleich richtig lernen als später Probleme und schlechte Angewohnheiten zu haben.

Und ParamStr(0) vor seinen Dateiname einzufügen ist ja nicht wirklich schwierig.

GetSpecialDirectory, etc. sind für einen Anfänger tatsächlich nichts. Da stimme ich dir zu.
Andreas Lauß
Blog
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      

 

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 +1. Es ist jetzt 21:56 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