AGB  ·  Datenschutz  ·  Impressum  







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

Undeclared identifier

Ein Thema von maximus Caesar · begonnen am 26. Sep 2004 · letzter Beitrag vom 26. Sep 2004
Antwort Antwort
Benutzerbild von maximus Caesar
maximus Caesar

Registriert seit: 26. Sep 2004
Ort: Biberach
319 Beiträge
 
Turbo Delphi für Win32
 
#1

Undeclared identifier

  Alt 26. Sep 2004, 15:38
Hallo!
Hab schon die Suchfunktion benutzt, aber keine Lösung gefunden.
Ich versuche eine Eigene komponente zu schreiben, die auf TImage basiert.
Bis jetzt sieht sie folgender maßen aus:


Delphi-Quellcode:
unit ImageMovereg;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, ExtCtrls;
var x,z:String;
    y,a:Integer;
    zeit1,zeit2:longint;

type
  TImageMove = class(TImage)
  private
        FMoveTo:String;
        FGeschwindigkeit:longint;
        FZahl1:Integer;
        FZahl2:Integer;
        FStatus:Boolean;
    { Private declarations }
  protected
    { Protected declarations }
  public

    { Public declarations }
  published
        property Zahl1 : Integer Read FZahl1 Write FZahl1;
        property Zahl2 : Integer Read FZahl2 Write FZahl2;
        property MoveTo : String Read FMoveTo Write FMoveTo;
        property Geschwindigkeit : longint Read FGeschwindigkeit Write FGeschwindigkeit;
        property Status : Boolean Read FStatus Write FStatus;
    { Published declarations }
  end;

procedure Register;

implementation




procedure Register;
begin
  RegisterComponents('Eigene Komponenten', [TImageMove]);
end;

procedure Move;
begin
a:=0;
x:=FMoveTo;
Delphi-Quellcode:
delete(x,3,999);
z:=FMoveTo;
delete(z,1,2);
y:=StrToInt(z);
if x='t+'then begin
        repeat
        a:=a+1;
        FTop:=FTop-1;
                zeit1:=GetTickCount;
        zeit2:=FGeschwindigkeit;
                repeat
                        Application.Processmessages
                if (GetAsyncKeyState(VK_ESCAPE))<>0 then break;
                until (GetTickCount-Zeit1>zeit2)
        if (GetAsyncKeyState(VK_ESCAPE))<>0 then break;
        until a>=y;
end;
if x='t-then begin
        repeat
        a:=a+1;
        FTop:=FTop+1;
                zeit1:=GetTickCount;
        zeit2:=FGeschwindigkeit;
                repeat
                        Application.Processmessages
                if (GetAsyncKeyState(VK_ESCAPE))<>0 then break;
                until (GetTickCount-Zeit1>zeit2)
        if (GetAsyncKeyState(VK_ESCAPE))<>0 then break;
        until a>=y;
end;
if x='l+'then begin
        repeat
        a:=a+1;
        FLeft:=FLeft-1;
                zeit1:=GetTickCount;
        zeit2:=FGeschwindigkeit;
                repeat
                        Application.Processmessages
                if (GetAsyncKeyState(VK_ESCAPE))<>0 then break;
                until (GetTickCount-Zeit1>zeit2)
        if (GetAsyncKeyState(VK_ESCAPE))<>0 then break;
        until a>=y;
end;
if x='l-then begin
        repeat
        a:=a+1;
        FLeft:=FLeft+1;
                zeit1:=GetTickCount;
        zeit2:=FGeschwindigkeit;
                repeat
                        Application.Processmessages
                if (GetAsyncKeyState(VK_ESCAPE))<>0 then break;
                until (GetTickCount-Zeit1>zeit2)
        if (GetAsyncKeyState(VK_ESCAPE))<>0 then break;
        until a>=y;
end;

end;
end;



end.

Wenn ich sie jetzt Compiliere erscheint folgende Fehlermeldung:

[Error] ImageMovereg.pas(48): Undeclared identifier: 'FMoveTo' (Zeile oben rot markiert)

Wie kann ich dafür sorgen, dass ich an dieser Stelle auf die Eigenschaft "MoveTo" zugreifen kann?

PS: Die Absnitte gehören natürlich zusammen, sie sind nur getrennt, um die Zeile Rot zu markieren!
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#2

Re: Undeclared identifier

  Alt 26. Sep 2004, 15:46
Hallo,

Zitat von maximus Caesar:
Delphi-Quellcode:
type
  TImageMove = class(TImage)
  private
        FMoveTo:String;
        FGeschwindigkeit:longint;
        FZahl1:Integer;
        FZahl2:Integer;
        FStatus:Boolean;
    { Private declarations }
  protected
    { Protected declarations }
  public
        procedure Move; <---
  published
        property Zahl1 : Integer Read FZahl1 Write FZahl1;
        property Zahl2 : Integer Read FZahl2 Write FZahl2;
        property MoveTo : String Read FMoveTo Write FMoveTo;
        property Geschwindigkeit : longint Read FGeschwindigkeit Write FGeschwindigkeit;
        property Status : Boolean Read FStatus Write FStatus;
    { Published declarations }
  end;

...

procedure TImageMove.Move;
begin
...
end;
...
Ich habe oben die Prozedur Move in deine Klasse TImageMove verschoben. Vorher war sie eine globale Prozedur, die nichts mit deiner Komponente zu tun hatte.

grüße, daniel
Daniel
Testen ist feige!
  Mit Zitat antworten Zitat
Benutzerbild von maximus Caesar
maximus Caesar

Registriert seit: 26. Sep 2004
Ort: Biberach
319 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Undeclared identifier

  Alt 26. Sep 2004, 15:55
Das heißt also, dass ich eine Prozedur (oder eine Funktion), die auf eine Eigenschaft der Komponente zugreift, immer im
public abschnitt ankündigen muss. Oder?
PS: Danke, Daniel!
  Mit Zitat antworten Zitat
Benutzerbild von maximus Caesar
maximus Caesar

Registriert seit: 26. Sep 2004
Ort: Biberach
319 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Undeclared identifier

  Alt 26. Sep 2004, 16:03
Habs jetzt ausprobiert.
Die Fehlermeldung kommt leider weiterhin!
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#5

Re: Undeclared identifier

  Alt 26. Sep 2004, 16:39
Zitat von maximus Caesar:
Das heißt also, dass ich eine Prozedur (oder eine Funktion), die auf eine Eigenschaft der Komponente zugreift, immer im
public abschnitt ankündigen muss. Oder?
Nein, eben nicht. Sie muss lediglich zur Klasse gehören. Bei dir war die Prozedur nicht in der Klasse, nur in der selben Unit. Du könntest die Prozedur genauso private, protected oder published definieren. Das ist nur eine Frage der Sichtbarkeit von außen.

Hast du auch auf das "TImageMove." bei der Prozedur-Implementierung geachtet?
Delphi-Quellcode:
procedure TImageMove.Move; <---
begin
...
end;
grüße, daniel
Daniel
Testen ist feige!
  Mit Zitat antworten Zitat
Benutzerbild von maximus Caesar
maximus Caesar

Registriert seit: 26. Sep 2004
Ort: Biberach
319 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Undeclared identifier

  Alt 26. Sep 2004, 16:52
Thanks, Daniel
Jetzt Funzts!
Noch ne Frage: Wie kann ich auf die Eigenschaften Top und Left zugreifen, die ja beim TImage Standart sind?


HABS RAUS:
self.top
self.left

Einen Fehler gibts noch:
bei Application.Processmessages kommt
[Error] ImageMovereg.pas(62): Undeclared identifier: 'Application' PS: hab ich aus nem Delphi-Buch

Lösung hier!
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:21 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