| |
|
|
- Página 1 - |
|
RudiB. | ¡Hola zusammen,
Yo stehe wohl a uno para mich schier unlösbaren Tarea. Yo möchte una Programa-Listing con Befehlszeilentrennung por Doppelpunkte, aufsplitten en separate Programmzeilen. Als Sonderfall se sin embargo una Línea con "Case" oder "CaseNot" beibehalten voluntad.
Hier veces una absolut Sinnfreies Listing y danach el Listing bereinigt.
...y así solls entonces aussehen.....Yo absolut no hinkriege !!!!
....z.B: alleine ya el String en VAR a$ con un Doppelpunkt en él es una Herausforderung dar...porque hier auch todavía el eigentliche Befehlszeile con un Backslash aufgesplittet se...
auch hier en el Foro se el erste Listing con el Cuerdas farblich no korrekt dargestellt....
Stehe gerade voll en el Schlauch... Kann me hier alguien en el Sprünge helfen ??? |
|
|
| |
|
|
| |
|
- Página 2 - |
|
|
RudiB. | sí Walter eigentlich así.....es sí ya fresco sin embargo möchte Yo una komplette Befehlszeilen-Auftrennung (salvo Case/Casenot) .... sprich, auch una Case/Casenot debería Befehle getrennt voluntad.... Yo blanco sí el es Tricky..schwierig...sch..schwer.
Aber Yo denke hier kann Yo anknüpfen.... Yo brauche el para mein Projekt "VarFinder".... tener como todavía así viele Baustellen offen....
aber Gracias primero.... Rudi |
|
|
| |
|
|
|
Walter | Mein Irrtum - Yo passe el caso/caseNot a, así lo así se ejecuta, como Usted lo necesidad... |
|
|
| |
|
|
|
Georg Teles | Hmpf bin verwirrt, veces Case con If sustituir eventuell ?
así solls aussehen
hier con Trennung
Grüße |
|
|
| |
|
|
|
RudiB. | ¡Hola Walter,
vielen Dank para Su Mühe... es ya no simplemente,,,,, Jedoch hast Usted muy gute Ansätze......
Mi Test-Objeto-Listings/Herausforderungen hier Foro son: z.B.: CPU-Simulation....https://XProfan.net/intl/de/anwendungen/8bit-cpu-simulation/
y [...] |
|
|
| |
|
|
|
RudiB. | ¡Hola Georg,
...Gracias para Su Kommentar....
Yo weiß no así wirklich, si Yo mich hier konkret genug ausgedrückt habe. Yo arbeite siempre todavía a mi Projekt "VarFinder". Como es eben wichtig, Programmzeilen a analysieren..... sprich el Programa muss Befehlszeilen auftrennen puede. Gerade en Bezug en If y Endif uno Línea, auch dieses se aufgetrennt voluntad puede. In diesem Ejemplo gehts veces sólo por lo tanto una Programmformatierung vernünftig durchzuführen. Und así gehts más ......Problemas...Problemas...usw. |
|
|
| |
|
|
|
Georg Teles | Hmpf,
streng genommen symbolisiert el Doppelpunkt ya una neue Línea en Case/Casenote
Bedeutet, dass du mittels Parsen el Doppelpunkt vorher entfernst y una neue Línea lo machst oder je después de, si du el Doppelpunkt como neue Línea interpretierst, veces así como Concepto
Grüße |
|
|
| |
|
|
|
RudiB. | OK... mal como Hintergrund para mi Intension. Mein Programa "VarFinder" se todos Variables en un Programa encontrar puede, sprich en welcher Línea "Deklariert" en welchen Zeilen kommt ellos todavía antes, es ellos Global deklariert oder kommt ellos auch aún en uno "Proc" antes usw. Gibt lo Schleifen, Abfragen " If Endif"" etc. Hierzu muss Yo nun veces jede Programmzeile auseinanderfieseln/zerlegen... Ist no gerade simplemente... Pensé ya Yo wäre fast al Ziel, sin embargo wurde en el Boden el Realität geholt,como Yo en el Praxistest con Programmen de diesem Foro, determinar musste el Todavía weit lejos bin vom Ziel...... |
|
|
| |
|
|
|
Georg Teles | Puh, sí entonces muss akribisch Línea para Línea con Estructuras verglichen y entschieden voluntad, qué como vorliegt
Einfach klingt no |
|
|
| |
|
|
|
RudiB. | Nein simplemente determinado no ...sin embargo denke Yo, el I una guten Weg bin. Lo son con Sicherheit todavía viele Fehler en el Programa.....bin aber ständig esta esta auszumerzen...eben en diesem Wege y siempre en el Hoffnung el lo jemanden son, el una neue "PROFANE" Concepto reinwirft |
|
|
| |
|
|
|
Walter | Neuer Intento...
' Das Codestück teilt Befehlszeilen en ":" en neue Zeilen en,
' außer
' a) el ":" befindet se innerhalb uno Stringliterals; oder
' b) después de caso/caseNot.
' Hier restos el erste ":" con el folgenden Befehl en derselben
' Línea obtener.
' Kommentarzeilen son no berücksichtigt;
' el necesario ggf vorher ausgeschieden voluntad
cls
Declarar Expediente$
declarar StringAn%,i%,en$,out$,a$[]
declarar AnzDP%
StringAn%=0
AnzDP%=0
Datei$=Loadfile$("ÖFFNE:","*.prf")
Asignar #1,Expediente$
reset #1
Imprimir "Working.....Please Wait"
Sinestar encargado EOF(#1)
input #1,en$
a$[]=explode(en$)' Signo el Línea en Array escribir
'Alle Signo el Línea durchlaufen
for i%,len(en$)
' Feststellen, si uno se innerhalb uno Cuerdas befindet
if (a$[i%-1]=Chr$(34)) and (StringAn%=0)
StringAn%=1
elseif (a$[i%-1]=Chr$(34)) and (StringAn%=1)
StringAn%=0
endif
if a$[i%-1]=":"
' caso UND erster : ?
if (left$(trim$(lower$(out$)),5)="case ") or (left$(trim$(lower$(out$)),8)="casenot ")
if AnzDP%=0' erster Doppelpunkt - Línea fortsetzen
out$=out$+a$[i%-1]
inc AnzDP%
más'Línea teilen
imprimir out$
out$=""
AnzDP%=0
endif
elseIf StringAn%=0' : es no innerhalb uno Cuerdas - Línea teilen
imprimir out$
out$=""
más
out$=out$+a$[i%-1]' : es innerhalb uno Cuerdas - Línea fortsetzen
endif
más' más Signo como :
out$=out$+a$[i%-1]
endif
endfor
imprimir out$
out$=""
EndWhile
Cerrar #1
Imprimir "FERTIG"
waitinput
|
|
|
| |
|
|
|
RudiB. | Das sieht Super de !!!
Posesiones todos todavía erweitert, así el ganzzeilige Kommentare übersprungen y ser Endkommentare primero abgetrennt y ser al Schluss wiederhergestellt voluntad. Ausserdem como Besonderheit todavía Sprungmarker, el en una Doppelpunkt enden....
' Das Codestück teilt Befehlszeilen en ":" en neue Zeilen en,
' außer
' a) el ":" befindet se innerhalb uno Stringliterals; oder
' b) después de caso/caseNot.
' Hier restos el erste ":" con el folgenden Befehl en derselben
' Línea obtener.
' Kommentarzeilen son no berücksichtigt;
' el necesario ggf vorher ausgeschieden voluntad
cls
Declarar Expediente$,End_Kommentar$,ausgabe%
declarar StringAn%,i%,en$,out$,a$[],pos%
declarar AnzDP%,kommentar%
StringAn%=0
AnzDP%=0
Datei$=Loadfile$("ÖFFNE:","*.prf")
Asignar #1,Expediente$
reset #1
Asignar #2,"Test_Datei.prf"
rewrite #2
Mientras que 1
If (ausgabe%<1) Or (ausgabe%>2)
Imprimir "Bitte gültigen Valor wählen ( 1 oder 2 )"
ausgabe%=Entrada$("1- en Bildschirm ausgeben / 2- en Expediente screiben","Bitte Auswahl treffen",ausgabe%)
Más
romper
EndIf
Endwhile
Imprimir "Working.....Please Wait"
Sinestar encargado EOF(#1)
'-----------------------------------------------------------------------------------------------------------------------
' *ganzzeilige Kommentare überspringen
'-----------------------------------------------------------------------------------------------------------------------
input #1,en$
If left$(trim$(en$),2)="/*"
If ausgabe%=1
Imprimir en$
Más
imprimir #2,en$
Endif
kommentar%=1
continue
Endif
If left$(trim$(en$),2)="*/"
If ausgabe%=1
Imprimir en$
Más
imprimir #2,en$
Endif
kommentar%=0
Continue
Endif
If (left$(trim$(en$),1)="'") Or (left$(trim$(en$),2)="//") Or (kommentar%=1)
If ausgabe%=1
Imprimir en$
Más
Imprimir #2, en$
Endif
continue
EndIf
'-----------------------------------------------------------------------------------------------------------------------
' Endkommentare abschneiden
'-----------------------------------------------------------------------------------------------------------------------
If (Instr("'",Trim$(en$),2)) Or (Instr("//",Trim$(en$),2))
pos%=0
End_kommentar$=""
Whileloop Len(en$)
If mid$(en$,&bucle,1)=chr$(34)
pos%=Not(pos%)
EndIf
If (mid$(en$,&bucle,1)="'") And (pos%=0)
End_kommentar$=Right$(en$,Len(en$)-&bucle+1)
en$=Left$(en$,&bucle-1)
Romper
EndIf
If (mid$(en$,&bucle,2)="//") And (pos%=0)
End_kommentar$=Right$(en$,Len(en$)-&bucle+1)
en$=Left$(en$,&bucle-1)
Romper
EndIf
EndWhile
EndIf
'--------------------------------------------------------------------------------------------------------------------------
If right$(Trim$(en$),1)=":"' si letztes Signo Doppelpunkt / Sprungmarker
If ausgabe%=1
Imprimir en$
Más
Imprimir #2, en$
Endif
Continue
Endif
a$[]=explode(en$)' Signo el Línea en Array escribir
'Alle Signo el Línea durchlaufen
for i%,len(en$)
' Feststellen, si uno se innerhalb uno Cuerdas befindet
if (a$[i%-1]=Chr$(34)) and (StringAn%=0)
StringAn%=1
elseif (a$[i%-1]=Chr$(34)) and (StringAn%=1)
StringAn%=0
endif
if a$[i%-1]=":"
' caso UND erster : ?
if (left$(trim$(lower$(out$)),5)="case ") or (left$(trim$(lower$(out$)),8)="casenot ")
if AnzDP%=0' erster Doppelpunkt - Línea fortsetzen
out$=out$+a$[i%-1]
inc AnzDP%
más'Línea teilen
If ausgabe%=1
imprimir out$
Más
imprimir #2,out$
Endif
out$=""
AnzDP%=0
endif
elseIf StringAn%=0' : es no innerhalb uno Cuerdas - Línea teilen
If ausgabe%=1
imprimir out$
Más
imprimir #2,out$
Endif
out$=""
más
out$=out$+a$[i%-1]' : es innerhalb uno Cuerdas - Línea fortsetzen
endif
más' más Signo como :
out$=out$+a$[i%-1]
endif
endfor
If ausgabe%=1
imprimir out$+End_Kommentar$
Más
imprimir #2,out$+End_Kommentar$
Endif
End_Kommentar$=""
out$=""
EndWhile
Cerrar #1
close #2
Imprimir "FERTIG"
waitinput
Posesiones lo entonces con el Quellcode "CPU-Simulation" laufen dejar. lo scheint Fehlerfrei durchzulaufen... |
|
|
| |
|
|
|
Walter | Es doch ya muy fein. Dann viel Glück - y más así! |
|
|
| |
|
|