Chr$(34)-Problem

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

aletes

Betreff: Chr$(34)-Problem

BeitragFr, Sep 11, 2009 14:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, ich habe ein problem mit einer gerade angefangenen Scriptengine, und zwar folgendes. Ich möchte das wenn im Script Print "Hello World" steht, Hello World ausgegeben wird, allerdings wird Hello World" ausgegeben(mit den Anführungsstichen),das ist der Code der Scriptingengine:
BlitzBasic: [AUSKLAPPEN]
Dim script$(1)
script(0)="Print "+Chr(34)
script(1)="Waitkey"

Type Script
Field zeile$
End Type

readscript("test.txt")
runscript()

Function readscript(pfad$)
DeleteScript()
scriptfile=OpenFile(pfad$)
Repeat
scr.Script = New Script
scr\zeile = ReadLine(scriptfile)
Until Eof(scriptfile) = 1
CloseFile scriptfile
End Function

Function DeleteScript()
For scr.Script = Each Script
Delete scr.Script
Next
End Function

Function runscript()
For scr.Script = Each Script
scrtext$ = scr\zeile
If 1 = Instr(scrtext,script(0)) Then
Lens% = Len(script(0))
klam% = Instr(scrtext,Chr$(34))
xtext$ = Str(Mid(scrtext,Lens+1,klam-(Lens+1)))
Print xtext
EndIf
If 1 = Instr(scrtext,script(1)) Then
WaitKey
EndIf
Next
End Function


Das Problem liegt in folgender Zeile:
BlitzBasic: [AUSKLAPPEN]
klam% = Instr(scrtext,Chr$(34))


In der Test.txt steht folgendes:
BlitzBasic: [AUSKLAPPEN]
Print "Hello World"
WaitKey

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Sep 11, 2009 14:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Replace oder besser gleich mit Mid richtig ausschneiden lassen.

Edit1: So?

Code: [AUSKLAPPEN]
Function runscript()
   
   Local Klam1%
   Local Klam2%
   Local XText$
   Local ScrText$
   Local Scr.Script
   
   For Scr.Script = Each Script
      ScrText = Scr\zeile
      If 1 = Instr(ScrText,script(0)) Then
         Klam1 = Instr(ScrText,Chr$(34))
         Klam2 = Instr(ScrText,Chr$(34),Klam1+1)
         XText = Str(Mid(ScrText,Klam1+1,Klam2-Klam1-1))
         Print ">>"+XText+"<<"
      EndIf
      If 1 = Instr(ScrText,script(1)) Then
         WaitKey
      EndIf
   Next
   
End Function
  • Zuletzt bearbeitet von hectic am Fr, Sep 11, 2009 15:13, insgesamt 2-mal bearbeitet
 

aletes

BeitragFr, Sep 11, 2009 15:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Und wie? Wäre nett, wenn du mir erklären könntest wie ich es richtig ausschneiden soll, ich habe noch nicht viel mit Strings gearbeitet Wink

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Sep 11, 2009 15:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Siehe Edit1: da oben

Du solltest dir die Werte von deinen Variablen auch mal ausgeben lassen. Dein berechneter Wert für die Längenangabe für MID ergab -1, womit MID dann immer den kompletten String ausgegeben hatte.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

aletes

BeitragFr, Sep 11, 2009 15:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, danke Very Happy
Ja, ich weiß, ich muss mich unbedingt mehr mit Strings auseinandersetzten, ich versprechs Embarassed

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group