Français
Source/ Codesnippets

Befehlszeilentrennung

 

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.
CLS
Déclarer a$,b$:Déclarer c$,d$
Déclarer e$:Imprimer "Hallo \
zusammen !":Déclarer INT GROBI: GROBI=500
a$=" qui le chien allez zum \
hell brennenden feu um sich \
trop wärmen: ABER!!\
qui chatte steht ihm im weg"
b$="nicht LEER"
c$="Test"
d$="fertig"
Imprimer:Imprimer:Cas b$=»:Imprimer" B ist LEER":Imprimer GROBI
Imprimer c$,d$,GROBI
waitinput

...et so solls ensuite air.....quoi je absolu pas hinkriege !!!!
CLS
Déclarer a$,b$
Déclarer c$,d$
Déclarer e$
Imprimer "Hallo \
zusammen !"
Déclarer INT GROBI
GROBI=500
a$=" qui le chien allez zum \
hell brennenden feu um sich \
trop wärmen: ABER!!\
qui chatte steht ihm im weg"
b$="nicht LEER"
c$="Test"
d$="fertig"
Imprimer
Imprimer
Cas b$=»:Imprimer" B ist LEER"
Imprimer GROBI
Imprimer c$,d$,GROBI
waitinput

....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 ???
 
XProfan X4
Xprofan X4
Rudolf Beske / München

Hardware: NB Intel I9 - 16GByte RAM
15.10.2022  
 




RudiB.
ah......, cela wichtigste oublier qc....qui Aufsplittung qui Befehlszeilen avec Backslash soll naturellement, comment im unteren Listing, beibehalten volonté.
 
XProfan X4
Xprofan X4
Rudolf Beske / München

Hardware: NB Intel I9 - 16GByte RAM
15.10.2022  
 




RudiB.
c'est mon Versuch (LISTING) cela Problem trop lösen...
cls
Déclarer la ligne$,x%,pos%,pos2%,new_zeile$,next_zeile$,org_zeile$,End_kommentar$,kom%,array$[]
Déclarer Zeit&,Dossier$
Datei$=Loadfile$("ÖFFNE:","*.prf")
Zeit&=&gettickcount
Assign #1,Dossier$
reset #1
Imprimer "Working.....Please Wait"

WhileNot EOF(#1)

    input #1,la ligne$
    Org_Zeile$=la ligne$
    '-----------------------------------------------------------------------------------------------------------------------
    '          Ganzzeilige Kommentare et Blockkommentare dans Leerzeilen wandeln
    '-----------------------------------------------------------------------------------------------------------------------

    Si (Left $(Trim$(la ligne$),1)="'") Or (Left $(Trim$(la ligne$),2)="//")

        la ligne$=»
        Imprimer Org_zeile$
        continue

    EndIf

    Si Left $(la ligne$,2)="/*"

        Imprimer Org_zeile$
        kom%=1
        continue

    EndIf

    Si Left $(la ligne$,2)="*/"

        Imprimer Org_zeile$
        kom%=0
        continue

    EndIf

    Si kom%=1

        la ligne$=»
        Imprimer Org_zeile$
        continue

    EndIf

    '-----------------------------------------------------------------------------------------------------------------------
    '-----------------------------------------------------------------------------------------------------------------------
    '          Doppelpunkte dans Cordes transformer
    '-----------------------------------------------------------------------------------------------------------------------

    Si non right$($ Trim(la ligne$),1)=chr$(92)

        Si instr(chr$(58),la ligne$)

            pos%=0

            Whileloop Len(la ligne$)

                Si mid$(la ligne$,&loop,1)=chr$(34)

                    pos%=Not(pos%)

                EndIf

                Si (pos%=1) And (mid$(la ligne$,&loop,1)=Chr$(58))

                    New_Zeile$=New_Zeile$+chr$(247)

                D'autre

                    new_Zeile$=new_Zeile$+mid$(la ligne$,&loop,1)

                EndIf

            Endwhile

            Si pos%=1

                la ligne$=Translate$(la ligne$,chr$(58),chr$(247))

            D'autre

                la ligne$=New_Zeile$
                new_zeile$=»

            Endif

        EndIf

    Endif

    '-----------------------------------------------------------------------------------------------------------------------
    '          Endkommentare couper
    '-----------------------------------------------------------------------------------------------------------------------

    Si (Instr("'",Trim$(la ligne$),2)) Or (Instr("//",Trim$(la ligne$),2))

        pos%=0
        End_kommentar$=»

        Whileloop Len(la ligne$)

            Si mid$(la ligne$,&loop,1)=chr$(34)

                pos%=Not(pos%)

            EndIf

            Si (mid$(la ligne$,&loop,1)="'") And (pos%=0)

                End_kommentar$=Right$(la ligne$,Len(la ligne$)-&loop+1)
                la ligne$=Left $(la ligne$,&loop-1)
                Pause

            EndIf

            Si (mid$(la ligne$,&loop,2)="//") And (pos%=0)

                End_kommentar$=Right$(la ligne$,Len(la ligne$)-&loop+1)
                la ligne$=Left $(la ligne$,&loop-1)
                Pause

            EndIf

        Endwhile

    EndIf

    '-----------------------------------------------------------------------------------------------------------------------
    '          Doppelpunkt Befehlszeilen-Trennung
    '-----------------------------------------------------------------------------------------------------------------------

    Si non right$($ Trim(la ligne$),1)=chr$(92)

        Si Instr(»,la ligne$)

            pos%=0
            pos2%=1
            new_zeile$=»

            Tandis que 1

                Pos%=Instr(»,la ligne$,pos2%)

                Si pos%=0

                    Pause

                EndIf

                Si right$(la ligne$,1)=»'Sprungmarker

                    pause

                EndIf

                Si (Left $(Trim$(lower$(la ligne$)),5)="case ") or (Left $(Trim$(lower$(la ligne$)),8)="casenot ")

                    Pos2%=Instr(»,la ligne$,pos%+1)

                    Si pos2%=0

                        Pause

                    EndIf

                EndIf

                new_Zeile$=Left $(la ligne$,pos%-1)
                new_Zeile$=Translate$(new_Zeile$,chr$(247),chr$(58))
                Imprimer new_zeile$
                new_Zeile$=»
                la ligne$=right$(la ligne$,Len(la ligne$)-pos%)

            Endwhile

        EndIf

    Endif

    la ligne$=Translate$(la ligne$,chr$(247),chr$(58))
    Imprimer la ligne$+" "+End_kommentar$
    End_kommentar$=»
    new_zeile$=" "

Endwhile

Fermer #1
Imprimer &gettickcount-Zeit&
Imprimer "FERTIG"
Waitinput
 
XProfan X4
Xprofan X4
Rudolf Beske / München

Hardware: NB Intel I9 - 16GByte RAM
15.10.2022  
 




Walter
ici un erster Ansatz, qui simple feststellt, si on sich chez einem Doppelpunkt dedans eines Cordes est ou bien pas.
Bzgl. Cas muss seulement encore geklärt volonté, si seulement qui erste Doppelpunkt après rester soll bzw. comment on avec weiteren verfährt.
'## Kommentarzeilen sommes ici pas berücksichtigt
'## cas ist ici encore pas berücksichtigt
cls
Déclarer Dossier$
declare StringAn%,i%,dans$,out$,a$[]
StringAn%=0' 0=Außerhalb eines Cordes, 1=Innerhalb eines Cordes
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 un Array écrivons
    'Alle marque qui la ligne durchlaufen
    for i%,len(dans$)
    ' Feststellen, si on sich dedans eines Cordes est
    cas a$[i%-1]=Chr$(34) and StringAn%=0:StringAn%=1
    cas a$[i%-1]=Chr$(34) and StringAn%=1:StringAn%=0

    si a$[i%-1]=»

        Si 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

        out$=out$+a$[i%-1]

    endif

    endfor
    imprimer out$
    out$=»

Endwhile

Fermer #1
Imprimer "FERTIG"
waitinput
 
19.10.2022  
 




RudiB.
allô Walter,

...joli cela doch encore quelqu'un sur cet Thema antwortet.

Dein Ansatz ist oui richtig, doch qui Teufel steckt oui im Detail...
si je z.B.: une Programmzeile qui une String beinhaltet, mais ensuite avec einem Backslash sur plusieurs Zeilen aufgeteilt wird.
siehe ici....
a$=" qui le chien allez zum \
hell brennenden feu um sich \
trop wärmen: ABER!!\
qui chatte steht ihm im weg"

ici haperst ensuite gewaltig...

je sais déjà une Solution pour mon Problem im allgemeinen, cependant serait je volontiers aussi une Solution pour trouver, si je une Dossier Zeilenweise einlese ....
il y a aussi hierfür une Solution .... ici devrait ensuite mais chacun la ligne par plusieurs Abfragen courir, quoi naturellement très viel Zeit kostet.....

je hab plan gehofft, quelqu'un hat une allumage concept, sur qui je pas viens...

Salut aus München
Rudi
 
XProfan X4
Xprofan X4
Rudolf Beske / München

Hardware: NB Intel I9 - 16GByte RAM
19.10.2022  
 




Walter
mon Programmstück venez avec Deinem Code
a$=" qui le chien allez zum \
hell brennenden feu um sich \
trop wärmen: ABER!!\
qui chatte steht ihm im weg"

mais bestens zurecht...
 
19.10.2022  
 




Walter
Sorry - déjà gesehen.
exposition je mir plus à...
 
19.10.2022  
 




RudiB.
DANKE...
 
XProfan X4
Xprofan X4
Rudolf Beske / München

Hardware: NB Intel I9 - 16GByte RAM
19.10.2022  
 




Walter
Bähhh - était seulement un kleiner faute drin...
maintenant allez cela!
'## Kommentarzeilen pas berücksichtigt
'## cas pas berücksichtigt
cls
Déclarer Dossier$
declare StringAn%,i%,dans$,out$,a$[]
StringAn%=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]=»

        Si 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

        out$=out$+a$[i%-1]

    endif

    endfor
    imprimer out$
    out$=»

Endwhile

Fermer #1
Imprimer "FERTIG"
waitinput
 
19.10.2022  
 




RudiB.
je travaille oui aussi tour.... mais scheinbar seh Je l' forêt avant lauter Bäumen pas.... souvent ist es so simple...hab je déjà so souvent ici im Forum erlebt...
 
XProfan X4
Xprofan X4
Rudolf Beske / München

Hardware: NB Intel I9 - 16GByte RAM
19.10.2022  
 




RudiB.
wow....kurz probiert avec dem Test-Listing, comment la hâte Du maintenant cela gemacht????
..muss Deinen Code la fois anschauen...
 
XProfan X4
Xprofan X4
Rudolf Beske / München

Hardware: NB Intel I9 - 16GByte RAM
19.10.2022  
 




Walter
ici eh bien velours cas / caseNot:
Dabei hab je mich daran gehalten, dass normalement alle  auf cas folgenden Befehle dans derselben la ligne chez vrai abgearbeitet volonté, au cours de chez faux tout de suite dans qui prochain la ligne gesprungen wird.
(Aus qui Aider: Cas N : BEF
Hat qui Ausdruck N une Wert <> 0, wird BEF fonctionnement, ansonsten allez qui Programmausführung dans qui prochain la ligne...)
' cela Codestück teilt Befehlszeilen chez ":" dans neue Zeilen sur,
' sauf
' a) qui ":" est sich dedans eines Stringliterals; ou bien
' b) chez cas/caseNot. ici rester alle ":" dans derselben la ligne _nach_ einem
' cas/caseNot conservé (allerdings bisher encore sans Berücksichtigung de
' Umbrüchen long Codezeilen)
' Kommentarzeilen sommes pas berücksichtigt;
' qui doit ggf auparavant ausgeschieden volonté
cls
Déclarer Dossier$
declare StringAn%,i%,dans$,out$,a$[]
declare caseAn%,pos%
StringAn%=0
CaseAn%=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
    ' si cas ou bien caseNot drin: Position feststellen
    pos%=instr("case ",lower$(dans$))
    cas pos%=0:pos%=instr("casenot ",lower$(dans$))

    si pos%=0' KEIN cas drin

        '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]=»

            Si 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

            out$=out$+a$[i%-1]' d'autre marque comme :

        endif

        endfor

    d'autre' cas bzw caseNot drin

        'Alle marque qui la ligne jusque cas durchlaufen
        for i%,pos%-1
        ' 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]=»

            Si 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

            out$=out$+a$[i%-1]' un d'autre marque comme :

        endif

        endfor

    endif

    si pos%>0

        ' reste qui cas-la ligne dans un neue la ligne écrivons
        imprimer mid$(dans$,pos%,len(dans$)-pos%+1)

    d'autre

        imprimer out$
        out$=»

    endif

Endwhile

Fermer #1
Imprimer "FERTIG"
waitinput

Gerne informer, sofern qui Kommentare pas ausreichen.
faute sommes naturellement possible...
 
19.10.2022  
 




Zum Quelltext


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

8.053 Views

Untitledvor 0 min.
Member 862464112.05.2024
Cyberangle03.02.2023
RudiB.02.02.2023
Normann Strübli31.01.2023
plus...

Themeninformationen

cet Thema hat 3 participant:

RudiB. (13x)
Walter (8x)
Georg Teles (3x)


Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie