| |
|
|
- page 1 - |
|
RudiB. | allô zusammen,
je stehe wohl à einer pour mich schier unlösbaren devoir. je voudrais un Programme-Listing avec Befehlszeilentrennung par Doppelpunkte, aufsplitten dans separate Programmzeilen. comme Sonderfall soll cependant une la ligne avec "Case" ou bien "CaseNot" beibehalten volonté.
ici la fois un absolu Sinnfreies Listing et après cela Listing bereinigt.
...et so solls ensuite air.....quoi je absolu pas hinkriege !!!!
....z.B: alleine déjà qui String dans VAR a$ avec einem Doppelpunkt y est un Herausforderung dar...weil ici aussi encore qui eigentliche Befehlszeile avec einem Backslash aufgesplittet wird...
aussi ici im Forum wird cela erste Listing avec den Cordes farblich pas korrekt dargestellt....
Stehe justement voll sur dem Schlauch... peux mir ici quelqu'un sur qui Sprünge aider ??? |
|
|
| |
|
|
| |
|
- page 2 - |
|
|
RudiB. | oui Walter eigentlich so.....ist oui déjà cool cependant voudrais je une komplette Befehlszeilen-Auftrennung (ausser Cas/Casenot) .... sprich, aussi pour einem Cas/Casenot devrait Befehle getrennt volonté.... je weiss oui c'est Tricky..schwierig...sch..schwer.
mais je denke ici peux je anknüpfen.... il me faut cela pour mon projet "VarFinder".... hab là encore so viele Baustellen offen....
mais merci erstmal.... Rudi |
|
|
| |
|
|
|
Walter | mon Irrtum - je passe cela cas/caseNot à, avec cela es so fonctionne, comment Du es brauchst... |
|
|
| |
|
|
|
Georg Teles | Hmpf suis verwirrt, la fois Cas avec Si ersetzen eventuell ?
so solls air
ici avec Trennung
Grüße |
|
|
| |
|
|
|
RudiB. | allô Walter,
vielen Dank pour Votre Mühe... ist déjà pas simple,,,,, cependant la hâte Du très gute Ansätze......
mon Test-objet-Listings/Herausforderungen ici Forum sommes: z.B.: CPU-Simulation....https://XProfan.net/intl/de/anwendungen/8bit-cpu-simulation/
et [...] |
|
|
| |
|
|
|
RudiB. | allô Georg,
...merci pour Deinen Kommentar....
je ne sais pas so wirklich, si je mich ici konkret genug ausgedrückt habe. je travaille toujours à meinem projet "VarFinder". voilà es plan important, Programmzeilen trop analysieren..... sprich cela Programme muss Befehlszeilen auftrennen peut. justement dans Bezug sur Si et Endif einer la ligne, aussi cet soll aufgetrennt volonté peut. dans diesem Beispiel gehts la fois seulement tout autor um une Programmformatierung vernünftig durchzuführen. et so gehts plus ......Probleme...Probleme...usw. |
|
|
| |
|
|
|
Georg Teles | Hmpf,
streng pris symbolisiert qui Doppelpunkt bereits une neue la ligne chez Cas/Casenote
Bedeutet, dass du mittels Parsen den Doppelpunkt auparavant entfernst et une neue la ligne daraus fais ou bien je après que, si du den Doppelpunkt comme neue la ligne interpretierst, la fois so comme concept
Grüße |
|
|
| |
|
|
|
RudiB. | OK... mal comme Hintergrund pour mon Intension. mon Programme "VarFinder" soll alle Variablen dans einem Programme trouver peut, sprich dans quel la ligne "Deklariert" dans welchen Zeilen venez vous encore avant, ist vous Global deklariert ou bien venez vous aussi encore dans einer "Proc" avant usw. Gibt es Schleifen, Abfragen " Si Endif"" etc. Hierzu muss je eh bien la fois chacun Programmzeile auseinanderfieseln/décomposer... Ist pas justement simple... J'ai pensé déjà je wäre presque am but, cependant wurde sur den Boden qui réalité geholt,comme je im Praxistest avec Programmen aus diesem Forum, feststellen musste le moi encore large entfernt suis vom but...... |
|
|
| |
|
|
|
Georg Teles | Puh, oui ensuite muss akribisch la ligne pour la ligne avec Strukturen verglichen et entschieden volonté, quoi là vorliegt
simple klingt es pas |
|
|
| |
|
|
|
RudiB. | non simple bestimmt pas ...cependant denke je, le moi sur einem guten Weg suis. il y a avec Sicherheit encore viele faute im Programme.....suis mais ständig dabei cet auszumerzen...plan sur diesem Wege et toujours dans qui espoir cela es quelqu'un gibt, qui une neue "PROFANE" concept reinwirft |
|
|
| |
|
|
|
Walter | Neuer Versuch...
' cela Codestück teilt Befehlszeilen chez ":" dans neue Zeilen sur,
' sauf
' a) qui ":" est sich dedans eines Stringliterals; ou bien
' b) pour cas/caseNot.
' ici bleibt qui erste ":" avec dem folgenden Befehl dans derselben
' la ligne conservé.
' Kommentarzeilen sommes pas berücksichtigt;
' qui doit ggf auparavant ausgeschieden volonté
cls
Déclarer Dossier$
declare StringAn%,i%,dans$,out$,a$[]
declare AnzDP%
StringAn%=0
AnzDP%=0
Datei$=Loadfile$("ÖFFNE:","*.prf")
Assign #1,Dossier$
reset #1
Imprimer "Working.....Please Wait"
WhileNot EOF(#1)
input #1,dans$
a$[]=explode(dans$)' marque qui la ligne dans Array écrivons
'Alle marque qui la ligne durchlaufen
for i%,len(dans$)
' Feststellen, si on sich dedans eines Cordes est
si (a$[i%-1]=Chr$(34)) and (StringAn%=0)
StringAn%=1
elseif (a$[i%-1]=Chr$(34)) and (StringAn%=1)
StringAn%=0
endif
si a$[i%-1]=»
' cas UND erster : ?
si (left$($ Trim(lower$(out$)),5)="case ") or (left$($ Trim(lower$(out$)),8)="casenot ")
si AnzDP%=0' erster Doppelpunkt - la ligne continuer
out$=out$+a$[i%-1]
inc AnzDP%
d'autre'la ligne partager
imprimer out$
out$=»
AnzDP%=0
endif
elseIf StringAn%=0' : ist pas dedans eines Cordes - la ligne partager
imprimer out$
out$=»
d'autre
out$=out$+a$[i%-1]' : ist dedans eines Cordes - la ligne continuer
endif
d'autre' d'autre marque comme :
out$=out$+a$[i%-1]
endif
endfor
imprimer out$
out$=»
Endwhile
Fermer #1
Imprimer "FERTIG"
waitinput
|
|
|
| |
|
|
|
RudiB. | cela sieht Super aus !!!
Habe cela ganze encore erweitert, so cela ganzzeilige Kommentare übersprungen volonté et Endkommentare zunächst abgetrennt volonté et am Schluss wiederhergestellt volonté. Ausserdem comme Besonderheit encore Sprungmarker, qui sur une Doppelpunkt enden....
' cela Codestück teilt Befehlszeilen chez ":" dans neue Zeilen sur,
' sauf
' a) qui ":" est sich dedans eines Stringliterals; ou bien
' b) pour cas/caseNot.
' ici bleibt qui erste ":" avec dem folgenden Befehl dans derselben
' la ligne conservé.
' Kommentarzeilen sommes pas berücksichtigt;
' qui doit ggf auparavant ausgeschieden volonté
cls
Déclarer Dossier$,End_Kommentar$,ausgabe%
declare StringAn%,i%,dans$,out$,a$[],pos%
declare AnzDP%,kommentar%
StringAn%=0
AnzDP%=0
Datei$=Loadfile$("ÖFFNE:","*.prf")
Assign #1,Dossier$
reset #1
Assign #2,"Test_Datei.prf"
rewrite #2
Tandis que 1
Si (ausgabe%<1) Or (ausgabe%>2)
Imprimer "Bitte gültigen Wert choisir ( 1 ou bien 2 )"
ausgabe%=Contribution$("1- sur Bildschirm ausgeben / 2- dans Dossier screiben","Bitte sélection treffen",ausgabe%)
D'autre
pause
EndIf
Endwhile
Imprimer "Working.....Please Wait"
WhileNot EOF(#1)
'-----------------------------------------------------------------------------------------------------------------------
' *ganzzeilige Kommentare überspringen
'-----------------------------------------------------------------------------------------------------------------------
input #1,dans$
Si left$($ Trim(dans$),2)="/*"
Si ausgabe%=1
Imprimer dans$
D'autre
imprimer #2,dans$
Endif
kommentar%=1
continue
Endif
Si left$($ Trim(dans$),2)="*/"
Si ausgabe%=1
Imprimer dans$
D'autre
imprimer #2,dans$
Endif
kommentar%=0
Continue
Endif
Si (left$($ Trim(dans$),1)="'") Or (left$($ Trim(dans$),2)="//") Or (kommentar%=1)
Si ausgabe%=1
Imprimer dans$
D'autre
Imprimer #2, dans$
Endif
continue
EndIf
'-----------------------------------------------------------------------------------------------------------------------
' Endkommentare couper
'-----------------------------------------------------------------------------------------------------------------------
Si (Instr("'",Trim$(dans$),2)) Or (Instr("//",Trim$(dans$),2))
pos%=0
End_kommentar$=»
Whileloop Len(dans$)
Si mid$(dans$,&loop,1)=chr$(34)
pos%=Not(pos%)
EndIf
Si (mid$(dans$,&loop,1)="'") And (pos%=0)
End_kommentar$=Right$(dans$,Len(dans$)-&loop+1)
dans$=Left $(dans$,&loop-1)
Pause
EndIf
Si (mid$(dans$,&loop,2)="//") And (pos%=0)
End_kommentar$=Right$(dans$,Len(dans$)-&loop+1)
dans$=Left $(dans$,&loop-1)
Pause
EndIf
Endwhile
EndIf
'--------------------------------------------------------------------------------------------------------------------------
Si right$(Trim$(dans$),1)=»' si letztes marque Doppelpunkt / Sprungmarker
Si ausgabe%=1
Imprimer dans$
D'autre
Imprimer #2, dans$
Endif
Continue
Endif
a$[]=explode(dans$)' marque qui la ligne dans Array écrivons
'Alle marque qui la ligne durchlaufen
for i%,len(dans$)
' Feststellen, si on sich dedans eines Cordes est
si (a$[i%-1]=Chr$(34)) and (StringAn%=0)
StringAn%=1
elseif (a$[i%-1]=Chr$(34)) and (StringAn%=1)
StringAn%=0
endif
si a$[i%-1]=»
' cas UND erster : ?
si (left$($ Trim(lower$(out$)),5)="case ") or (left$($ Trim(lower$(out$)),8)="casenot ")
si AnzDP%=0' erster Doppelpunkt - la ligne continuer
out$=out$+a$[i%-1]
inc AnzDP%
d'autre'la ligne partager
Si ausgabe%=1
imprimer out$
D'autre
imprimer #2,out$
Endif
out$=»
AnzDP%=0
endif
elseIf StringAn%=0' : ist pas dedans eines Cordes - la ligne partager
Si ausgabe%=1
imprimer out$
D'autre
imprimer #2,out$
Endif
out$=»
d'autre
out$=out$+a$[i%-1]' : ist dedans eines Cordes - la ligne continuer
endif
d'autre' d'autre marque comme :
out$=out$+a$[i%-1]
endif
endfor
Si ausgabe%=1
imprimer out$+End_Kommentar$
D'autre
imprimer #2,out$+End_Kommentar$
Endif
End_Kommentar$=»
out$=»
Endwhile
Fermer #1
close #2
Imprimer "FERTIG"
waitinput
Habe es ensuite avec dem Quellcode "CPU-Simulation" courir laisser. es scheint correct durchzulaufen... |
|
|
| |
|
|
|
Walter | c'est doch déjà très délicat. ensuite viel Glück - et plus so! |
|
|
| |
|
|