| Autor |
Beitrag |
joker0000
      
Beiträge: 70
Win XP
Delphi 2006
|
Verfasst: So 13.01.08 13:34
Zuletzt bearbeitet von joker0000 am Mo 31.03.08 18:18, insgesamt 2-mal bearbeitet
|
|
nagel
      
Beiträge: 708
Win7, Ubuntu 10.10
|
Verfasst: So 13.01.08 14:04
Du musst dir halt erst mal überlegen, was dein Interpreter für Befehle interpretieren soll, und deren Syntax, und die Benutzereingaben dann danach parsen. Ich denk mal, dass die meisten Kommandos, wenn nicht alle, maximal einen Parameter brauchen, deshalb dürfte der "Parser" nicht allzu kompliziert werden (Leerzeichen suchen  ).
Du könntest beispielsweise für den Anfang mal definieren
gehe x (geht x Pixel nach vorne)
drehe x (dreht um den Winkel x nach rechts)
stift x (x=0 -> stift oben, x=1 stift unten)
Dann eben immer den Teil des Strings vor dem Leerzeichen rausnehmen und in 'ner case-Abfrage die Turtlefunktionen aufrufen.
|
|
joker0000 
      
Beiträge: 70
Win XP
Delphi 2006
|
Verfasst: So 13.01.08 14:06
Zuletzt bearbeitet von joker0000 am So 30.03.08 19:38, insgesamt 1-mal bearbeitet
|
|
nagel
      
Beiträge: 708
Win7, Ubuntu 10.10
|
Verfasst: So 13.01.08 14:34
Was soll den abgefragt werden? Geht's darum, ob der Rand der Zeichenfläche erreicht worden ist, oder was?
Und Schleifen sind glaub ich auch nicht zu kompliziert, zumindest eine For-Schleife sollte ohne größere Probleme machbar sein.
|
|
joker0000 
      
Beiträge: 70
Win XP
Delphi 2006
|
Verfasst: Mo 14.01.08 16:16
Zuletzt bearbeitet von joker0000 am So 30.03.08 19:49, insgesamt 1-mal bearbeitet
|
|
nagel
      
Beiträge: 708
Win7, Ubuntu 10.10
|
Verfasst: Mo 14.01.08 16:29
Klingt prinzipiell vernünftig, ja.
Die Funktion, die du suchst, heißt copy.
|
|
joker0000 
      
Beiträge: 70
Win XP
Delphi 2006
|
Verfasst: Mo 14.01.08 18:05
Zuletzt bearbeitet von joker0000 am So 30.03.08 19:48, insgesamt 1-mal bearbeitet
|
|
DrRzf
      
Beiträge: 260
Win XP Prof
D7 Enterprise
|
Verfasst: Di 15.01.08 00:40
Wenn sicher ist dass es nur eine zusammenhängende zahl in dem string gibt, gibts ne recht unelegante aber einfache lösung.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| function GetIntegerFromStr(str:string):integer; var i : integer; tmpstr : string; begin tmpstr := ''; for i := 0 to length(str) do if StrToIntDef(str[i],-1) <> -1 then tmpstr := tmpstr + str[i]; result := StrToInt(tmpstr); end; |
_________________ rein statistisch gesehen darf man keiner statistik trauen die man nicht selbst gefälscht hat.
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Di 15.01.08 09:27
Die unelegante Verssion von DrRzf dürfte klappen, wenn du es lieber elegant hast, suche mit POS nach der öffnenden Klammer und kopiere dann mit copy bis zur schließenden Klammer. Sollte etwa so gehen:
Delphi-Quelltext 1:
| number := copy (MyString, pos('(', MyString), pos(')', MyString) - pos('(', MyString)); |
Ungetestet, da grad kein Delphi da. Schau dir die Funktionen mal an, dann kriegst du das selber raus
Quelltext 1: 2: 3:
| Links (50) Rechts(10) Gehe(20) |
Wenn es so einfach ist, dann schreib dir einen Rekord Delphi-Quelltext 1: 2: 3: 4:
| type TTurtlecommand is record command : String; amount : Integer; end; |
und einen dynamischen Array dieses Rekords.
Nun geh deinen Text zeile für zeile durch und schreibe die Zahl in amount und den Text bis zur ersten ( in command, wobei du auch gleich leertasten entfernen und auf gültigkeit prüfen kannst (ist mein command-String ein gültiger Befehl oder hat ein Scherzkeks Spiele_YoYo (500) geschrieben? ist überhaupt eine ( da? ist eine zahl da? ...). Dann kannst du in einer zweiten Schleife dieses array durchgehen und die Befehle ausführen.
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
DrRzf
      
Beiträge: 260
Win XP Prof
D7 Enterprise
|
Verfasst: Di 15.01.08 15:55
JayEff hat folgendes geschrieben: | | Die unelegante Verssion von DrRzf dürfte klappen, wenn du es lieber elegant hast... |
Ich benutze diese art dazu um in einem rtf zeilenweise nach zahlen zu suchen.
das problem dabei ist, dass diese daten dort per drag&drop von einem browser kommen, und dabei je nach browser andere formatierungen drinn sind. (beim IE sind leerzeichen, bei FF kommen Tabs...)
Was aber sicher ist, ich hab anfangs nen string und nachher ne zahl, die aber auch noch tausendertrennzeichen enthält.
auf diese art sind die dann auch gleich verschwunden.
Edit:
hab mich oben etwas mit dem index vertan, der muss bei 1 beginnen.
aber hier die function die ich benutze, orischinal aus dem source kopiert.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| function GetIntFromStr(source : string): integer; var i : integer; s : string; begin s := ''; for i := 1 to length(source) do if StrToIntDef(source[i],-1) <> -1 then s := s + source[i]; result := StrToInt(s); end; |
_________________ rein statistisch gesehen darf man keiner statistik trauen die man nicht selbst gefälscht hat.
|
|
joker0000 
      
Beiträge: 70
Win XP
Delphi 2006
|
Verfasst: So 20.01.08 12:58
Zuletzt bearbeitet von joker0000 am So 30.03.08 19:51, insgesamt 1-mal bearbeitet
|
|
DrRzf
      
Beiträge: 260
Win XP Prof
D7 Enterprise
|
Verfasst: So 20.01.08 20:14
joker0000 hat folgendes geschrieben: | | aber vorsicht bei der google suche xD |
Iss ja gut dass der Delphi Compiler nicht im Internet danach suchen muss um es in Code umzusetzen 
_________________ rein statistisch gesehen darf man keiner statistik trauen die man nicht selbst gefälscht hat.
|
|
joker0000 
      
Beiträge: 70
Win XP
Delphi 2006
|
Verfasst: So 20.01.08 20:37
Zuletzt bearbeitet von joker0000 am So 30.03.08 19:55, insgesamt 1-mal bearbeitet
|
|
joker0000 
      
Beiträge: 70
Win XP
Delphi 2006
|
Verfasst: Mo 21.01.08 16:43
Zuletzt bearbeitet von joker0000 am So 30.03.08 20:20, insgesamt 1-mal bearbeitet
|
|
Mitmischer 1703
      
Beiträge: 754
Erhaltene Danke: 19
Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
|
Verfasst: Mo 21.01.08 18:35
_________________ Die Lösung ist nicht siebzehn.
|
|
joker0000 
      
Beiträge: 70
Win XP
Delphi 2006
|
Verfasst: Di 22.01.08 06:34
Zuletzt bearbeitet von joker0000 am So 30.03.08 20:20, insgesamt 1-mal bearbeitet
|
|
joker0000 
      
Beiträge: 70
Win XP
Delphi 2006
|
Verfasst: So 02.03.08 17:30
Zuletzt bearbeitet von joker0000 am So 30.03.08 19:41, insgesamt 1-mal bearbeitet
|
|
joker0000 
      
Beiträge: 70
Win XP
Delphi 2006
|
Verfasst: Mo 03.03.08 17:28
Zuletzt bearbeitet von joker0000 am So 30.03.08 19:41, insgesamt 1-mal bearbeitet
|
|
joker0000 
      
Beiträge: 70
Win XP
Delphi 2006
|
Verfasst: Sa 08.03.08 17:32
|
|