@USchuster Respekt man sieht du hast ahnung ^^ aber für mich war das etwas zu kompliziert hab noch nicht lange informatik kenne also noch nicht so viele Begriffe. Ich sag mal ich hab nur Bahnhof verstanden^^ trotzdem danke
Bzgl. dem Bahnhof meinst Du bestimmt Scopeproblem. Es wurde im Prinzip schon erklärt und bedeutet das es einen Namenskonflikt gibt - der Compiler nimmt einen anderen Bezeichner als vom Programmierer beabsichtigt. Für Bezeichner gibt es verschiedene Gültigkeitsbereiche und sofern man die Bezeichner nicht genauer definiert/qualifiziert, dann wird jeweils der, wie von himitsu geschrieben, "nähere" Bezeichner verwendet.
Das folgendes Beispiel erklärt das vielleicht auch
Delphi-Quellcode:
program ScopeDemo;
{$APPTYPE CONSOLE}
uses
Controls;
var
Text: string = 'Globale Variable Text';
type
TFoo = class(TControl)
public
procedure Test;
end;
{ TFoo }
procedure TFoo.Test;
var
Text: string;
begin
WriteLn(Self.Text);
Text := 'Variable Text in TFoo.Test';
WriteLn(Text);
WriteLn(ScopeDemo.Text);
end;
var
Foo: TFoo;
begin
Foo := TFoo.Create(nil);
try
Foo.Text := 'Property TControl.Text';
Foo.Test;
finally
Foo.Free;
end;
ReadLn;
end.
Das sollte folgenden Output erzeugen
Code:
Property TControl.Text
Variable Text in TFoo.Test
Globale Variable Text
Vielleicht hilft auch dieser Link weiter
Deklarationen und Anweisungen (Delphi) | Namenskonflikte.