![]() |
Rechner - "Undefinierter Bezeichner TFolge"
Hallo!
Ich sitz schon wieder mal länger an einem Programm, das so funktionieren soll: Eine Tokenfolge namens "TFolge" wird angeliefert, und dann verarbeitet. Ich bekomme immer wieder den Fehler "Undefinierter Bezeichner TFolge" Woran liegt das? Hier ist der Quelltext von Unit2 und Unit3, vielleicht könnt ihr mir helfen! Unit2:
Delphi-Quellcode:
Unit3:
unit zScanclss;
interface type tTokenfolge=array[1..100] of string; type tOperatormenge = set of '*'..'/'; //Menge von Zeichen (=char) von .. bis // bezogen auf den ASCII-Code type tZuweisungsScanner = class private Tokenfolge: tTokenfolge; index : integer; // Aktueller Tokenfolgenindex Operatormenge: tOperatormenge; public constructor create; function isOperator(c: char): boolean; procedure makeTokenfolge(quelle : string); procedure getTokenfolge(Var TFolge: tTokenfolge); function maxindex:integer; end; implementation constructor tZuweisungsScanner.create; begin Operatormenge := ['*','+','-','/']; index:=0; // Noch kein Token ermittelt. end; function tZuweisungsScanner.isOperator(c: char): boolean; begin result := (c in Operatormenge); // Ist c in der Menge enthalten? end; procedure tZuweisungsScanner.makeTokenfolge(quelle : string); var i : integer; tok : string; begin // 1.Variable bauen und einschreiben i:=1; tok:=''; while quelle[i]<>':' do begin tok:=tok+quelle[i]; inc(i); end; inc(index); tokenfolge[index]:=tok; // ':=' bauen und einschreiben inc(index); tokenfolge[index]:=quelle[i]+quelle[i+1]; inc(i); inc(i); // Restschleife while (i<length(quelle)) do begin // Falls Quellenende noch nicht erreicht, Variable bauen und einschreiben tok:=''; while (i<length(quelle))and (not isOperator(quelle[i]))do begin tok:=tok+quelle[i]; inc(i) end; inc(index); tokenfolge[index]:=tok; //Falls Quellenende noch nicht erreicht, Operator einschreiben if i<length(quelle)then begin inc(index); tokenfolge[index]:=quelle[i]; inc(i); end; end; (* of Restschleife *) // ';' einschreiben inc(index); tokenfolge[index]:=quelle[i]; end; procedure tZuweisungsScanner.getTokenfolge(Var TFolge: tTokenfolge); begin TFolge:= tokenfolge; end; function tZuweisungsScanner.maxindex: integer; begin result:=index; end; end.
Delphi-Quellcode:
Der Fehler tritt beim Starten auf und liegt wohl an Unit3, hab aber keine Ahnung, woran!
unit Unit3;
interface uses zscanclss; (*Voraussetzung: 1. Nur drei Variablen möglich 2. Keine Zahlen in der Wertzuweisung 3. Nur die Operationen '+' und '-' möglich, eventuell mehrfach 4. Zahlenwerte für die Variablen sind 3 Editfeldern zu entnehmen. Dies macht aber der Anwender! *) type trechner=class private Wert1, Wert2, Wert3 :integer; //Gibt uns der Anwender! public procedure setWerte(a,b,c :integer); //Reiherfolge wie bei den Editfeldern! procedure berechne(a,b,c:integer); end; implementation { trechner } procedure trechner.berechne(a, b, c: integer); var i,hilf,zwischen:integer; var name1,name2,name3:string; begin i:=4; zwischen:=Wert1; name1:=TFolge[3]; name2:='0'; name3:='0'; while TFolge[i]<>';' do begin if Tfolge[i]='+' then begin if tfolge[i+1]=name1 then zwischen:=zwischen+wert1 else if tfolge[i+1]<> name1 then begin name2:=tfolge[i+1]; zwischen:=zwischen+wert2; end else if (tfolge[i+1]<>name1) and (tfolge[i+1]<>name2) then begin name3:=tfolge[i+1]; zwischen:=zwischen+wert3; end; inc(i); inc(i); end; end; end; procedure trechner.setWerte(a, b, c: integer); begin wert1:=a; wert2:=b; wert3:=c; end; end. Bitte helft mir! :wiejetzt: |
Re: Rechner - "Undefinierter Bezeichner TFolge"
Hallo,
TFolge ist in Unit3 ja auch nicht deklariert :???: |
Re: Rechner - "Undefinierter Bezeichner TFolge"
super, und wie mach ich das? Als private-Deklaration im Interface-Teil?
|
Re: Rechner - "Undefinierter Bezeichner TFolge"
Warum gibst du einer Instanz einen Namen mit "T" am Anfang :? ?
Wenn die Variable nur in Berechne vorkommt:
Delphi-Quellcode:
procedure TRechner.Berechne(a, b, c: Integer);
var i, hilf, zwischen: Integer; name1, name2, name3: string; Folge: TTokenFolge; |
Re: Rechner - "Undefinierter Bezeichner TFolge"
Vorgabe meines Info-Lehrers, den muss man nicht verstehen ^^
Danke nochmal! Jetzt hab ich einen Fehler beim Übergeben der Werte Wert1, Wert2, Wert3! Folgendes Fenster erscheint: "Zugriffsverletzung bei Adresse (...)" Der Fehler soll an der Stelle Wert1:=a; sein... :wiejetzt: :wall: |
Re: Rechner - "Undefinierter Bezeichner TFolge"
Ich krieg die Krise!
:roteyes: Ich verstehe nicht, warum es an der Stelle ein Problem gibt, ich habe die Werte von String nach Integer umgewandelt und will sie nur anderen Integer-Variablen zuordnen -.- :gruebel: |
Re: Rechner - "Undefinierter Bezeichner TFolge"
Erzeugst du auch irgendwo eine Instanz der Klasse?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz