CodeConverter
Übersicht

![]() |
5k41Betreff: CodeConverter |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo!
Ich habe vorhin auf einen Thread in der BC einen kleinen Codeconverter geschrieben, aber nun habe ich das Problem das ich nur BlitzBasic und C++ kann und somit mir der Codeconverter nicht so viel nützt, da die Sprachen recht wenig gemeinsam haben. Ich dachte vielleicht das einer Lust hat ihn ein bisschen mit qb oder pb befehlen zu erweitern... hier ist der momentane Code: Code: [AUSKLAPPEN] AppTitle "CodeConverter" iname$=Input("Input:") oname$=Input("Output:") If FileType(iname$)=1 Then inp=OpenFile(iname$) Else RuntimeError "Input-File existiert nicht! EndIf If FileType(oname$)=1 Then oup=WriteFile(oname$) Else RuntimeError "Outoupt-File existiert nicht!" EndIf Repeat lin$=ReadLine(inp) in=whiteSpace(lin$);letztes Leerzeichen ermitteln vor dem ersten buchstaben ermitteln If in<>0 Then leer$=Left(lin$,in) befehl$=Mid(lin$,in+1,Len(lin)) Else leer$="" befehl$=lin EndIf If Left(befehl$,4)="txt(" Then WriteLine oup,leer+"Text "+stringSplitt(stringSplitt(befehl,"(",1),")",0) ;hier können neue Befehle per ElseIf reingehauen werden (und natürlich meiner entfernt werden ;-)) Else WriteLine oup,lin EndIf Until(Eof(inp)) RuntimeError "Fertig!" ;Functions------------------------------------------------------------------------------------------------------------------- ;SPLITTS A STRING AT THE CHAR Function stringSplitt$(strg$,char$,selection%) Local newstrg$="" Local count%=0 If Instr(strg$,char$)>0 Then For i%=1 To Len(strg$) If Mid(strg$,i%,1)=char$ Then count%=count%+1:i=i+1 If count%=selection% Then newstrg$=newstrg$+Mid(strg,i%,1) If count%>selection% Then Exit Next Else newstrg$=strg$ EndIf Return newstrg$ End Function ;FINDS THE LAST WHITESPACE INFRONT OF A LETER IN A STRING Function whiteSpace(strg$) For i=1 To Len(strg$) If Mid(strg,i,1)<> " " Then Return lst If Mid(strg,i,1)=" " Then lst=i Next Return lst End Function und hier nochmal eine Datei, welche ich immer zum testen convertiert hab: test.qb hat Folgendes geschrieben: txt(0,0, " Hallo!") huhu sadasd txt(10 ,20 ,"fdas sdlk ")´ sry ich hab wirklich keine ahnung von qb desshalb der Fantasie-Befehl^^ MfG |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
~VERSCHOBEN~ Dieser Thread passte nicht in das Forum, in dem er ursprünglich gepostet wurde. Ins Codearchiv bitte nur vollständige Sachen, kein WiP. Viel Erfolg mit dem Converter. Gruß BladeRunner |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
MoM007 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wir können uns ja zusammentun, ich will auch einen schreiben, ich hab auch schon einen Tread gemacht:
https://www.blitzforum.de/foru...hp?t=17872 Ich kenn mich aber nur sehr dürftig mit QBasic aus, muss dann wohl ein paar Bücher lesen ![]() MfG MoM007[/url] |
||
AMD XP 2800+, 9600 256RAM, 1GB RAM, WIN XP PRO |
![]() |
Kryan |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich könnte euch mit bisschen fachwissen bezüglich qbasic dienen ![]() so weiß ich wie double-buffering und sowas geht ![]() |
||
Webspaceanbieter?
Klick hier! Kultige Spieleschmiede? Klick hier! |
![]() |
MoM007 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kryan hat Folgendes geschrieben: so weiß ich wie double-buffering und sowas geht
![]() Das wird wohl nciht nötig sein, aber ich komm drauf zurück ![]() PS: wir können ja ein Projekt daraus machen, wenn sich genügend Leute melden die bock darauf haben. |
||
![]() |
Kryan |
![]() Antworten mit Zitat ![]() |
---|---|---|
wieso wird es nicht nötig sein??
wollt ihr etwa kein Flip und kein BackBuffer() und soweiter verwenden?? ich hoffe mal, dass das sich nicht so in deinen projekten verhält ![]() |
||
Webspaceanbieter?
Klick hier! Kultige Spieleschmiede? Klick hier! |
![]() |
MoM007 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also wie es bei 5k41 aussieht, weiß ich nicht, aber ich brauch das nicht, bie Qbaisc ist das ja auch nicht so gefragt, gibt ja so gut wie keine grafik, oder?
Aber wenn ich mal so drüber nachdenke würde mich das schon mal interessieren wie das in Qbasic aussieht, kannst ja mal Beispiele posten. MfG MoM007 |
||
AMD XP 2800+, 9600 256RAM, 1GB RAM, WIN XP PRO |
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
erstmal: sry wegen Codearchiv! Ich dachte das das was fürs archiv ist, da es zeigt wie man einen Converter schrieben könnte... egal!
@Momo h3h3 momo du bist cool! ich hab doch das dingen nur wegen dir geschrieben! Ich brauch sowas eigentlich garnicht, aber du hast mir irgendwie den anreiz gegeben und ich wollt sehn ob ich das hinbekomme!^^ @Kryan Ich hab kein Problem damit wenn du den CodeConverter für QB ausbaust! Im gegenteil! Ich wär sogar froh! Ich hab den Converter wie schon gesacht nur wegen Momo geshcrieben von daher könnt ihr damit machen was ihr wollt... ich wär nur froh wenn ihr den erweiterten Converter dann hier posten würdet ![]() MfG ~Edit~ Momo ja du hast den richtigen angeschrieben... leider spackt ICQ im moment... schreib mich bitte demnächst nochmal an ![]() |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
![]() |
Kryan |
![]() Antworten mit Zitat ![]() |
---|---|---|
@momo: in qbasic gibt es grafiken, man muss nur wissen wie das geht
mit den befehlen bsave und bload kann man so ein array einlesen oder speichern guckt man sich die hilfe zu diesen funktionen an, so erkennt man, wie man etwas was auf dem bildschirm ist, in ein array reinbekommt oder auch andersrum leider geht es nicht mit .bmp-dateien oder gar .jpg .png etc. so muss man sich dann in einer anderen sprache (zB blitzbasic) einen bilder-konverter basteln für kleine 2d-spiele ohne aufwendigen sound (jaja...guckt euch mal die sound-anweisung bei qbasic an) kann man qbasic benutzen, was einem sogar aktzeptable geschwindigkeit bietet, sofern man double-buffering anwendet (dazu mal PCOPY und SCREEN anschauen) |
||
Webspaceanbieter?
Klick hier! Kultige Spieleschmiede? Klick hier! |
![]() |
MoM007 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Kryan: Du kannst ja mal in den Code von 5k41 das reinschreiben, was du weißt, wäre echt nett, weil ein converter der nicht alles kann isr echt doof.
5k41 erklärt mir noch wie es geht und dann schreib ich ihn alleine weiter, aber wenn du das machen würdestes fänd ich echt nett. MfG MoM007 @Kryan + @5k41 heißt MoM007! danke |
||
AMD XP 2800+, 9600 256RAM, 1GB RAM, WIN XP PRO |
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@MoM:
sollte hja danke ICQ geklärt sein... machen das ja nun zusammen ![]() @Kryan: Lass das mal über ICQ besprechen... dann kann ich das alles in den Converter einbauen ![]() @All: Ich schreib den Converter nun für QB soweit wie ich komme... werde zwischendurch mal ein paar WIPS poste, aber da ich weiss das ich ihn niemals ganz fertig bekommen würde (ohne QB Kenntnisse auch schwer) werde ich irgenwann eine Version posten, die ich nicht mehr weitermachen werde! Erst dann empfehle ich den Code zu ändern oder zu erweitern, da ich bis dahin noch ein paar veränderungen usw. vornehmen werde, die das Programmieren leichter machen. MfG |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
![]() |
Kryan |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Momo: Momo zu schreiben ist einfacher als MoM007 oder wie auch immer...
@5k41: Ja gut, also ich werde dich darin unterstützen dann kannst ja auch mal bisschen qbasic lernen ![]() aber du darfst nicht damit aufhören!! |
||
Webspaceanbieter?
Klick hier! Kultige Spieleschmiede? Klick hier! |
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Huhu!!!!!
Die neue Version ist da!! (nicht das ihr denkt, das es hier nicht weiter geht ![]() Features: - REM und ' eingebaut - INPUT "Hallo";string$ sowie INPUT "HUHU",string$ (sowie input mit allen anderen Datentypen eingebaut) -Select Case -> Select -Case Else -> Default ausserdem ist das komplette gerüst fertig, heißt das es ab jetzt nur noch um den Fleiß geht alle Befehle einzubauen, aber das sollte machbar sein! hier der code: Code: [AUSKLAPPEN] SetBuffer BackBuffer() AppTitle "CodeConverter" iname$=Input("Input:") oname$=Input("Output:") Type Tstrng Field strg$ End Type If FileType(iname$)=1 Then inp=OpenFile(iname$) Else RuntimeError "Input-File existiert nicht! EndIf oup=WriteFile(oname$) Repeat lin$=ReadLine(inp) ;string in formatierungsleerzeichen und befehle aufteilen: in=whiteSpace(lin$) If in<>0 Then leer$=Left(lin$,in) befehl$=Mid(lin$,in+1,Len(lin)) Else leer$="" befehl$=lin EndIf oldbefehl$=befehl$ ;Damit wenn nur ein kommentar in der Zeile steht das prüfen wegfällt: rem=sInstr(befehl$,"REM") haken=sInstr(befehl$,"'") If rem=0 Then rem = Len(leer)+2 If haken=0 Then haken= Len(leer)+2 If rem>Len(leer)+1 Or haken>Len(leer)+1 Then ;Nur wirklichen Befehl extrahieren: If Instr(befehl$,"REM")<>0 Then befehl$=stringSplitt(befehl$,"REM",0) If Instr(befehl$,"'") <>0 Then befehl$=stringSplitt(befehl$,"'",0) oldbefehl2$=befehl$ Repeat ;Damit falls ein Doppelpunkt in der Zeile ist das ganze wiederholt wird! ;nur einen Befehl rausschneiden (wegen ":") : befehl$=stringSplitt(oldbefehl2$,":",counter) If sInstr(befehl$,":")<>0 Then befehl=stringSplitt(befehl,":",counter-1) oldbefehl3$=befehl$ If counter>0 Then strg$=strg$+":" ;Strings aus dem Befehl extrahieren: Repeat ins=Instr(befehl$,Chr(34)) If ins<>0 Then strng.Tstrng=New Tstrng strng\strg$=Right(befehl$,Len(befehl$)-ins) If stringSplitt(strng\strg$,Chr(34),1)<>"" Then strng\strg$=stringSplitt(strng\strg$,Chr(34),0) EndIf If Len(befehl$)-ins-1-Len(strng\strg$)>0 Then befehl$=Left(befehl$,ins-1)+Right(befehl$,Len(befehl$)-ins-1-Len(strng\strg$)) Else befehl$=Left(befehl$,ins-1) EndIf EndIf Until(ins=0) ;Alle Whitespaces in dem Befehl entfernen: befehl$=Replace(befehl$," ","") ;Befehle von QB gegen die von BB ersetzen: If Upper(Left(befehl$,5))="INPUT" Then ;Input Routine strng.Tstrng=First Tstrng If Instr(befehl$,";")<>0 Then If Instr(befehl$,"%")<>0 Or Instr(befehl$,"&")<>0 Then strg$=strg$+leer+stringSplitt(befehl$,";",1)+"=Int(Input("+Chr(34)+strng\strg$+"?"+Chr(34)+"))" ElseIf Instr(befehl$,"#")<>0 Or Instr(befehl$,"!")<>0 Then strg$=strg$+leer+stringSplitt(befehl$,";",1)+"=Float(Input("+Chr(34)+strng\strg$+"?"+Chr(34)+"))" ElseIf Instr(befehl$,"$")<>0 Then strg$=strg$+leer+stringSplitt(befehl$,";",1)+"=Input("+Chr(34)+strng\strg$+"?"+Chr(34)+")" Else strg$=strg$+leer+stringSplitt(befehl$,";",1)+"$=Input("+Chr(34)+strng\strg$+"?"+Chr(34)+")" EndIf ElseIf Instr(befehl$,",")<>0 Then If Instr(befehl$,"%")<>0 Or Instr(befehl$,"&")<>0 Then strg$=strg$+leer+stringSplitt(befehl$,",",1)+"=Int(Input("+Chr(34)+strng\strg$+Chr(34)+"))" ElseIf Instr(befehl$,"#")<>0 Or Instr(befehl$,"!")<>0 Then strg$=strg$+leer+stringSplitt(befehl$,",",1)+"=Float(Input("+Chr(34)+strng\strg$+Chr(34)+"))" ElseIf Instr(befehl$,"$")<>0 Then strg$=strg$+leer+stringSplitt(befehl$,",",1)+"=Input("+Chr(34)+strng\strg$+Chr(34)+")" Else strg$=strg$+leer+stringSplitt(befehl$,",",1)+"$=Input("+Chr(34)+strng\strg$+Chr(34)+")" EndIf EndIf ElseIf Upper(Left(befehl$,10))="SELECTCASE" Then strg$=strg$+leer+"Select "+stringSplitt(befehl$,"SELECTCASE",1) ElseIf Upper(Left(befehl$,8))="CASEELSE" Then strg$=strg$+leer+"Default "+stringSplitt(befehl$,"CASEELSE",1) Else strg$=strg$+leer+oldbefehl3$ EndIf ;long und single in int und float verwandeln: (funktioniert nur leider auch in Strings...-.-) strg$=sReplace(strg$,"&","%") strg$=sReplace(strg$,"!","#") strg$=sReplace(strg$,";","+") ;(Länge aller Strings speichern und) types löschen: For strng.Tstrng=Each Tstrng ;If strg$<>oldbefehl2 Then laenge=laenge+Len(strng\strg$) Delete strng.Tstrng Next counter=counter+1 Until(stringSplitt(oldbefehl2$,":",counter)="") ;Alle Kommentare wieder anfügen: If Len(oldbefehl$)-Len(oldbefehl2$)>0 Then strg$=strg$+Right(oldbefehl$,(Len(oldbefehl$)-Len(oldbefehl2$))) Else strg$=lin$ EndIf ;Kommentar Symbole von QB gegen die von BB ersetzen: strg$=sReplace(strg$,"REM ",";") strg$=sReplace(strg$,"'",";") ;Neuen Befehl in die .bb datei schreiben: WriteLine oup,strg$ strg$="" counter=0 c=c+1 Text 0,0,c Flip Cls Until(Eof(inp)) CloseFile(inp) CloseFile(oup) RuntimeError "Fertig!" ;Functions------------------------------------------------------------------------------------------------------------------- ;SPLITTS A STRING AT THE CHAR Function stringSplitt$(strg$,char$,selection%) Local newstrg$="" Local count%=0 Local charlength=Len(char$) If sInstr(strg$,char$)>0 Then For i%=1 To Len(strg$) If Mid(strg$,i%,charlength)=char$ Then count%=count%+1:i=i+charlength If count%>selection% Then Exit If count%=selection% Then newstrg$=newstrg$+Mid(strg,i%,1) Next Else If selection=0 Then newstrg$=strg$ If selection>0 Then newstrg$="" EndIf Return newstrg$ End Function ;EQUAL TO REPLACE Function sReplace$(strg$,char$,nchar$) Local nstrg$="" Local charlength=Len(char$) If sInstr(strg$,char$)<>0 Then For i=1 To Len(strg$) If Mid(strg$,i,charlength)=char$ Then nstrg$=nstrg$+nchar$:i=i+charlength-1 Else nstrg$=nstrg$+Mid(strg,i,1) EndIf Next Else nstrg$=strg$ EndIf Return nstrg End Function ;EGUAL TO INSTR Function sInstr(strg$,char$) Local charlength=Len(char$) For i=1 To Len(strg$) If Mid(strg$,i,1)=Chr(34) And char<>Chr(34) Then in=1-in If Mid(strg$,i,charlength)=char$ And in=0 Then Return i Next End Function ;FINDS THE LAST WHITESPACE INFRONT OF A LETER IN A STRING Function whiteSpace(strg$) For i=1 To Len(strg$) If Mid(strg,i,1)<> " " Then Return lst If Mid(strg,i,1)=" " Then lst=i Next Return lst End Function denke es werden noch einige sachen verändert... aber das ist erstmal das gerüst! MfG ~Edit~ hier noch mal ein bisschen test-code: a.qb hat Folgendes geschrieben: REM Das ist ein Testprogramm von Jan 'das ist nochmal ein anderes Kommentar! INPUT "blabla";string$ REM hier speichere ich einen Wert in string! INPUT "Zahl:";zahl& REM hier speihcer ich ne Zahl in nem Long INPUT "Zahl2:";zahl2% 'hier speihcer ich ne Zahl in nem Int INPUT "Zahl3:";zahl3#REM hier speicher ich ne Zahl in nem Double INPUT "Zahl4:";zahl4!REM hier speihcer ich ne Zahl in nem Single b.qb hat Folgendes geschrieben: gut$="gut ?" schlecht$="schlecht?" Print "Hallo, wie gehts denn so?"; gut$; schlecht$ c.qb hat Folgendes geschrieben: CLS INPUT "Wie ist Dein Name ?"; name$ INPUT "Wie ist das Wetter heute? (gut), oder (schlecht) "; wetter$ ' IF wetter$ = "gut" THEN text$ = ", dann gehen Sie lieber raus an die Luft!" ' IF wetter$ = "schlecht" THEN text$ = ", dann bleiben Sie lieber hier!" PRINT "Ok, "; name$; text$ d.qb hat Folgendes geschrieben: REM Das ist ein : Test Programm 'Cool oder? INPUT "BlaBlaBla";string$:INPUT "Huhu!!";zahl% REM Ob ichs wohl hinbekomme? Print string$;zahl% e.qb hat Folgendes geschrieben: REM hallo REM hallo CLS INPUT "Gib deine Note ein (1...6):";Note% SELECT CASE Note% CASE 1: PRINT "sehr gut" CASE 2: PRINT "gut" CASE 3: PRINT "befriedgend" CASE 4: PRINT "ausreichend" CASE 5: PRINT "mangelhaft" CASE 6 PRINT "ungenuegend" PRINT "Die Versetzung ist gefaehrdet!!!" CASE ELSE: PRINT "Diese Note gibt es nicht." END SELECT f.qb hat Folgendes geschrieben: Print "Hallo du pREMier Minister" P.S.: All mein Q-Basic "Fachwissen" beziehe ich nur durch MoM007 (dafür bin ich ihm auch sehr dankbar) desshalb bitte nicht über fehler oder komplett falsche befehle oder besser falsche Interpretationen ![]() Danke! |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
- Zuletzt bearbeitet von 5k41 am Do, Mai 11, 2006 17:58, insgesamt 6-mal bearbeitet
![]() |
Kryan |
![]() Antworten mit Zitat ![]() |
---|---|---|
nur mal ne frage (hab den code nicht probiert):
wenn man schreibt: hallo$="HALLO DU PREMIERE-MINISTER!" wird es dann auch als Kommentar gegolten oder nicht? |
||
Webspaceanbieter?
Klick hier! Kultige Spieleschmiede? Klick hier! |
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
oh stimmt sry! im falle rem und ' hab ich vergessen meine "eigene" Instr zu benutzten! wird sofort geändert!
Danke! MfG ~Edit~ Code oben editiert und eine Testdatei (f.qb) hinzugefügt! ~Edit2~ Gleiches Problem nochmal behoben, da ich es eben nur bei der Prüfung, nicht aber bei der ersetztung geändert hatte |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group