Seite 1 von 1
"harter"-Tab im PB-Editor
Verfasst: 04.12.2012 13:20
von 7x7
Angeregt durch diesen Thread
Befehl über mehrere Zeilen würde mich interessieren, ob es einen ähnlichen "Workaround" gibt, der verhindert, dass die Formatierfunktion im Editor mir bestimmte Code-Strukturen zerstört.
Ich möchte, dass mir eine -wie z.B.untenstehende- Assembler-Strukture nicht wieder an den Rand gesetzt wird. Ich bräuchte also so etwas wie einen "harten" Tab. Weiss da jemand ein Lösung dazu?
Code: Alles auswählen
;If adresse(weg)\z[1] > adresse(index(CoIdx))\z[1]
MOV eax,dword[p_y]
MOV ebx,dword[p_z]
MOV ecx,dword[eax] ;alter Weg
CMP ecx,dword[ebx] ;neuer Weg
JLE @f
;If k1(adresse(weg)\z[1]-1)<#MaxCount: Goto weiter2: EndIf
DEC ecx ;adresse(weg)\z[1] -1
SAL ecx,2
ADD ecx,dword[a_K1]
CMP dword[ecx],#MaxCount ;vorherige 1.Para zu selten?
JL l_weiter2
!@@:
;--------
MaxCheck:
MOV ecx,dword[a_K1]
CMP dword[ecx+9*4],5 ;Grenzwert Loc1
JNZ @f
;If adresse(weg)\z[2]=9: weg=Sprung2(weg): Goto weiter4: EndIf
MOV eax,dword[p_y] ;@adresse(weg)\z[1]
CMP dword[eax+4],9 ; adresse(weg)\z[2]
JNZ @f
MOV ebx,dword[v_weg]
MOV eax,dword[a_Sprung2]
SAL ebx,2
MOV eax,[eax+ebx]
MOV dword[v_weg],eax
JMP l_weiter4
!@@:
Re: "harter"-Tab im PB-Editor
Verfasst: 04.12.2012 13:27
von Kiffi
nicht wirklich das, was Du suchst, aber ich würde es als
externe PBI auslagern und mit IncludeFile() einbinden.
Grüße ... Kiffi
Re: "harter"-Tab im PB-Editor
Verfasst: 04.12.2012 13:45
von Danilo
So sollte es gehen, auch wenn es umständlich ist:
Code: Alles auswählen
;If adresse(weg)\z[1] > adresse(index(CoIdx))\z[1]
MOV eax,dword[p_y]
MOV ebx,dword[p_z]
MOV ecx,dword[eax] ;alter Weg
CMP ecx,dword[ebx] ;neuer Weg
JLE @f
CompilerIf 1
;If k1(adresse(weg)\z[1]-1)<#MaxCount: Goto weiter2: EndIf
DEC ecx ;adresse(weg)\z[1] -1
SAL ecx,2
ADD ecx,dword[a_K1]
CMP dword[ecx],#MaxCount ;vorherige 1.Para zu selten?
JL l_weiter2
CompilerEndIf
!@@:
;--------
MaxCheck:
MOV ecx,dword[a_K1]
CMP dword[ecx+9*4],5 ;Grenzwert Loc1
JNZ @f
CompilerIf 1
;If adresse(weg)\z[2]=9: weg=Sprung2(weg): Goto weiter4: EndIf
MOV eax,dword[p_y] ;@adresse(weg)\z[1]
CMP dword[eax+4],9 ; adresse(weg)\z[2]
JNZ @f
CompilerIf 1
MOV ebx,dword[v_weg]
MOV eax,dword[a_Sprung2]
SAL ebx,2
MOV eax,[eax+ebx]
MOV dword[v_weg],eax
JMP l_weiter4
CompilerEndIf
CompilerEndIf
!@@:
Statt "CompilerIf 1" + "CompilerEndIf" solltest Du auch eigene, leere Macros nehmen können, z.B.:
Dann diese 2 (eindeutigen) Namen in den IDE-Preferences bei -> "Indentation" zu den Schlüsselwörtern hinzufügen.
Re: "harter"-Tab im PB-Editor
Verfasst: 04.12.2012 13:46
von STARGÅTE
7x7 hat geschrieben:Ich möchte, dass mir eine -wie z.B.untenstehende- Assembler-Strukture nicht wieder an den Rand gesetzt wird.
Naja, von alleiner setzt sich der Code nicht wieder an den Rand, du musst ja dann irgendwas gedrückt haben?
Wenn du alles markiert hast und dann "auto-Increment" gedrückt hast, klar ...
Du kannst aber auch die ASM-Einrückung definieren.
Oder du definierst ein allgemeines Einrücken für ;{ ... ;} bereiche, dann würde dein Code so aussehen:
Code: Alles auswählen
;If adresse(weg)\z[1] > adresse(index(CoIdx))\z[1]
MOV eax,dword[p_y]
MOV ebx,dword[p_z]
MOV ecx,dword[eax] ;alter Weg
CMP ecx,dword[ebx] ;neuer Weg
JLE @f ;{
;If k1(adresse(weg)\z[1]-1)<#MaxCount: Goto weiter2: EndIf
DEC ecx ;adresse(weg)\z[1] -1
SAL ecx,2
ADD ecx,dword[a_K1]
CMP dword[ecx],#MaxCount ;vorherige 1.Para zu selten?
JL l_weiter2
!@@: ;}
Re: "harter"-Tab im PB-Editor
Verfasst: 05.12.2012 16:42
von 7x7
Danke für die Vorschläge!
Habe mich für folgendes entschieden:
Finde ich logisch und gut "lesbar", weil es am unauffälligsten wirkt!
Code: Alles auswählen
;If adresse(weg)\z[1] > adresse(index(CoIdx))\z[1]
MOV eax,dword[p_y]
MOV ebx,dword[p_z]
MOV ecx,dword[eax] ;alter Weg
CMP ecx,dword[ebx] ;neuer Weg
JLE @f
;+
;If k1(adresse(weg)\z[1]-1)<#MaxCount: Goto weiter2: EndIf
DEC ecx ;adresse(weg)\z[1] -1
SAL ecx,2
ADD ecx,dword[a_K1]
CMP dword[ecx],#MaxCount ;vorherige 1.Para zu selten?
JL l_weiter2
;-
!@@:
; --------
MaxCheck:
MOV ecx,dword[a_K1]
CMP dword[ecx+9*4],5 ;Grenzwert Loc1
JNZ @f
;+
;If adresse(weg)\z[2]=9: weg=Sprung2(weg): Goto weiter4: EndIf
MOV eax,dword[p_y] ;@adresse(weg)\z[1]
CMP dword[eax+4],9 ; adresse(weg)\z[2]
JNZ @f
;+
MOV ebx,dword[v_weg]
MOV eax,dword[a_Sprung2]
SAL ebx,2
MOV eax,[eax+ebx]
MOV dword[v_weg],eax
JMP l_weiter4
;-
;-
!@@:
Dennoch würde ich die Möglichkeit eines "harten"-Tabs vorziehen. Vielleicht denkt einer der PB-Entwickler mal darüber nach, ob man evtl. ein [Shift]+[Tab] für sowas einbauen könnte.
Re: "harter"-Tab im PB-Editor
Verfasst: 05.12.2012 19:14
von bobobo
sowas kannste Du nahezu selber bauen.
Ich kenn zwar keinen "harten"Tab
aber ein "hartes"Leerzeichen
chr(160) .. kann man einfach mit gedrückter Alt-Taste und 160
auf dem Tastaturblock eingeben.
Dieses Zeichen wird vom pb-Kompiler allerdings als ungültig erkannt
und muss vor dem Kompilieren rausgenommen werden.
Aber dafür kannst Du Dir relativ flott was basteln was den aktuellen
Quelltext entsprechend vorbehandelt und als tool in der IDE
"vor dem Kompilieren/Starten" mit Parameter %COMPILEFILE
und Flag "warten bis zum Beenden" integriert wird.
ich habe da mal was vorbereitet
Code: Alles auswählen
fi.s=ProgramParameter(0)
If ReadFile(0,fi)
While Eof(0)=0
fu.s=ReadString(0)
While Left(fu,1)=Chr(160)
fu=Mid(fu,2,Len(fu)-1)
Wend
fo.s+fu+#CRLF$
Wend
CloseFile(0)
CreateFile(0,fi)
WriteStringN(0,fo)
CloseFile(0)
EndIf
Re: "harter"-Tab im PB-Editor
Verfasst: 06.12.2012 19:38
von 7x7
@bobobo
Diesen Weg halte ich nicht für so praktikabel. Bei tieferen Einrückungen könnte man damit schon sehr beschäftigt werden.
Dein Vorschlag bringt mich aber auf eine andere Idee, die ausserhalb dieses Themas liegt.