Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Identifier not found -- Wo steckt der Fehler (https://www.delphipraxis.net/199546-identifier-not-found-wo-steckt-der-fehler.html)

Schwalbe.Pilot 31. Jan 2019 08:16

Identifier not found -- Wo steckt der Fehler
 
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 :lol: (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 :-D

haentschman 31. Jan 2019 08:57

AW: Identifier not found -- Wo steckt der Fehler
 
Willkommen...:dp:
Delphi-Quellcode:
procedure WelcherHintergrund(HintergrundZaehler:Integer);
begin
     if HintergrundZaehler = 99 then; // das ; ist zu viel :-)
        Hintergrund.Glyph.loadfromfile('99.bmp');
end;

Schwalbe.Pilot 31. Jan 2019 09:00

AW: Identifier not found -- Wo steckt der Fehler
 
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.:?

Neutral General 31. Jan 2019 09:10

AW: Identifier not found -- Wo steckt der Fehler
 
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

Schwalbe.Pilot 31. Jan 2019 09:21

AW: Identifier not found -- Wo steckt der Fehler
 
Zitat:

Zitat von Neutral General (Beitrag 1424476)
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 :thumb:
Auf sowas sind wir zu dritt nach 2 Stunden suchen nicht gekommen :lol:
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. :stupid:

Aviator 31. Jan 2019 09:24

AW: Identifier not found -- Wo steckt der Fehler
 
Zitat:

Zitat von Schwalbe.Pilot (Beitrag 1424479)
Zitat:

Zitat von Neutral General (Beitrag 1424476)
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 :thumb:
Auf sowas sind wir zu dritt nach 2 Stunden suchen nicht gekommen :lol:
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)

Zitat:

Zitat von Schwalbe.Pilot (Beitrag 1424479)
Ps: Ich lasse den Threat mal offen, falls noch solche Fehler kommen. :stupid:

Ich sags mal so: Neuer Fehler --> neuer Thread :P

DP-Maintenance 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. 31. Jan 2019 10:33

AW: Identifier not found -- Wo steckt der Fehler
 
Zitat:

Zitat von Schwalbe.Pilot (Beitrag 1424469)
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;

freimatz 31. Jan 2019 10:42

AW: Identifier not found -- Wo steckt der Fehler
 
Zitat:

Zitat von Andreas L. (Beitrag 1424491)
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. :wink:

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

Andreas L. 31. Jan 2019 12:45

AW: Identifier not found -- Wo steckt der Fehler
 
Zitat:

Zitat von freimatz (Beitrag 1424492)
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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:19 Uhr.
Seite 1 von 2  1 2      

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