AGB  ·  Datenschutz  ·  Impressum  







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

Zuweisungsscanner????

Ein Thema von Feechan · begonnen am 26. Apr 2005 · letzter Beitrag vom 26. Apr 2005
Antwort Antwort
Seite 1 von 2  1 2      
Feechan

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

Zuweisungsscanner????

  Alt 26. Apr 2005, 19:05
Hallo!
Ich hänge seit einer Woche an diesem blöden Zuweisungsscanner und weiß echt nicht weiter, das ist die Aufgabe:
Ich soll eine Art Zuweisungsscanner implementieren, der aus einem edit-feld die einzelnen Bestandteile rauszieht, in einem Array in einer zweiten Unit speichert und dass ganze dann in einer Listbox wiedergibt. Dabei soll das ganze ungefähr so aussehen:

Eingetippt: a:=b;
Ausgabe:
a
:=
b
;

oder:

anna:=34 + jojo;

=>
anna
:=
34
+
jojo
;

Hier ist schon etwas quelltext:
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);
      function getTokenfolge: tTokenfolge;
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 l,x:integer;
begin
l:=length(quelle);
for x:=1 to l do begin
Tokenfolge[x]:=quelle[x];
end;
end;

function tZuweisungsScanner.getTokenfolge: tTokenfolge;
var i:integer;
begin
result[1]:=tokenfolge[1];
i:=1;
while tokenfolge[i+1]<>':do begin
result[1]:=result[i];
inc(i);
end;
result[2]:=':=';
//while
end;

end.
Da stellt sich mir immer die Frage:
Könnt ihr mir da helfen? Wär echt super!
Bye!
Fee
  Mit Zitat antworten Zitat
Feechan

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

Re: Zuweisungsscanner????

  Alt 26. Apr 2005, 19:21
wies aussieht könnt ihr mir da auch nicht weiterhelfen..... trotzdem danke
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Zuweisungsscanner????

  Alt 26. Apr 2005, 19:26
ich glaub du gehst das ganze bischen falsch an... gehe den gesammtstring per schleife, zeischen für zeischen durch und sobald von buchstaben zu zahlen, zahlen zu operator etc. wechselt stopfst du das bisher gelesene in die liste.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Feechan

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

Re: Zuweisungsscanner????

  Alt 26. Apr 2005, 19:28
hört sich logisch an aber wie soll ich das bitte machen?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Zuweisungsscanner????

  Alt 26. Apr 2005, 19:32
warte mal ca. ne viertel stunde dann hab ich das fertig
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Zuweisungsscanner????

  Alt 26. Apr 2005, 19:34
du kannst mit s[i] mit i € IN; i >= 1 auf die einzelnen Zeichen eines strings zuweisen. wenn du das ganze in ner for schleife ablaufen lässt, kriegst du eins nach dem anderen.
wenn dir das nicht reicht, kriegst du gerne code von mir, wie ich das mal gemacht habe.

EDIT: formulierung geändert.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Zuweisungsscanner????

  Alt 26. Apr 2005, 19:38
So siehts aus:
Delphi-Quellcode:
procedure doit(AStr: String; ADestList: TStrings);
type
  TCharType = (ctZahl, ctBuchstabe, ctOther);
  function LGetCharType(AChar: Char): TCharType;
  begin
    if pos(AChar, '1234567890') > 0 then
      result := ctZahl
    else if pos(AnsiLowerCase(AChar), 'abcdefghijklmnopqrstuvwxyz') > 0 then
      result := ctBuchstabe
    else
      result := ctOther;
  end;
var LTmpStr: String;
    LCurrType, LType: TCharType;
    LCount: Integer;
begin
  AStr := StringReplace(AStr, ' ', '', [rfReplaceAll]);
  if (AStr <> '') then
  begin
    LTmpStr := '';
    LCurrType := LGetCharType(AStr[1]);
    for LCount := 1 to length(AStr) do
    begin
      LType := LGetCharType(AStr[LCount]);
      if LType <> LCurrType then
      begin
        if LTmpStr <> 'then
        begin
          ADestList.Add(LTmpStr);
          LTmpStr := '';
        end;
        LCurrType := LType;
      end;
      LTmpStr := LTmpStr + AStr[LCount];
    end;
    if LTmpStr <> 'then
      ADestList.Add(LTmpStr);
  end;
end;
beispielaufruf:
Delphi-Quellcode:
var LDestList: TStringList;
begin
  LDestList := TStringList.Create;
  doit('anna:=34 + jojo;', LDestList);
  ShowMessage(LDestList.Text);
  LDestList.Free;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Feechan

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

Re: Zuweisungsscanner????

  Alt 26. Apr 2005, 19:39
wow, danke sir tom... (vergessen ^^)
ich muss kurz weg, bin um neun wieder da, danke danke danke danke danke danke!!!!!!
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Zuweisungsscanner????

  Alt 26. Apr 2005, 19:46
das ganze kannst du kürzer auch haben.....
(und weniger c&p verdächtig)

Delphi-Quellcode:
type TCharSet:set of char; // eine Menge von Zeichen

function explode(s:string; chars:TCharSet);
var i:integer;
begin
 for i := 1 to length(s) do //den ganzen string durchlaufen
  if s[i] in chars then handle(i,s[i]); //wenn gefunden, dann index und character an handler übergeben.
end;

procedure handle(index:Integer;character:char);
begin
showmessage('am index ' + inttostr(i) + ' trat der char '+ character + ' auf.'); //Dialogbox mit Index und Character ausgeben
// hier irgendwas machen. zum besipiel die zuweisung auflösen.
end;
EDIT: für den in operator liebe ich delphi.......
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Zuweisungsscanner????

  Alt 26. Apr 2005, 19:51
@DGL-luke: Dir ist aber schon aufgefallen das es nicht ein einzelnes zeischen ist was die verschiedenen teile von einander trennt?!
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 09:55 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