AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Rechner - "Undefinierter Bezeichner TFolge"
Thema durchsuchen
Ansicht
Themen-Optionen

Rechner - "Undefinierter Bezeichner TFolge"

Ein Thema von Feechan · begonnen am 9. Mai 2005 · letzter Beitrag vom 9. Mai 2005
Antwort Antwort
Feechan

Registriert seit: 15. Feb 2005
17 Beiträge
 
#1

Rechner - "Undefinierter Bezeichner TFolge"

  Alt 9. Mai 2005, 11:53
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:
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.
Unit3:

Delphi-Quellcode:
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.
Der Fehler tritt beim Starten auf und liegt wohl an Unit3, hab aber keine Ahnung, woran!
Bitte helft mir!
  Mit Zitat antworten Zitat
s14

Registriert seit: 15. Mai 2003
Ort: München
251 Beiträge
 
Delphi 7 Architect
 
#2

Re: Rechner - "Undefinierter Bezeichner TFolge"

  Alt 9. Mai 2005, 11:58
Hallo,
TFolge ist in Unit3 ja auch nicht deklariert
  Mit Zitat antworten Zitat
Feechan

Registriert seit: 15. Feb 2005
17 Beiträge
 
#3

Re: Rechner - "Undefinierter Bezeichner TFolge"

  Alt 9. Mai 2005, 12:07
super, und wie mach ich das? Als private-Deklaration im Interface-Teil?
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#4

Re: Rechner - "Undefinierter Bezeichner TFolge"

  Alt 9. Mai 2005, 12:19
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;
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Feechan

Registriert seit: 15. Feb 2005
17 Beiträge
 
#5

Re: Rechner - "Undefinierter Bezeichner TFolge"

  Alt 9. Mai 2005, 12:22
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...
  Mit Zitat antworten Zitat
Feechan

Registriert seit: 15. Feb 2005
17 Beiträge
 
#6

Re: Rechner - "Undefinierter Bezeichner TFolge"

  Alt 9. Mai 2005, 12:35
Ich krieg die Krise!


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 -.-
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Rechner - "Undefinierter Bezeichner TFolge"

  Alt 9. Mai 2005, 12:59
Erzeugst du auch irgendwo eine Instanz der Klasse?
Michael
Ein Teil meines Codes würde euch verunsichern.
  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 22:08 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