Español
Fuente/ Codesnippets

Befehlszeilentrennung

 

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.
CLS
Declarar a$,b$:Declarar c$,d$
Declarar e$:Imprimir "Hallo \
zusammen !":Declarar INT GROBI: GROBI=500
a$=" el Hund va para \
hell brennenden Feuer en se \
a wärmen: ABER!!\
el Katze es ihm en el weg"
b$="nicht LEER"
c$="Test"
d$="fertig"
Imprimir:Imprimir:Case b$="":Imprimir" B es LEER":Imprimir GROBI
Imprimir c$,d$,GROBI
waitinput

...y así solls entonces aussehen.....Yo absolut no hinkriege !!!!
CLS
Declarar a$,b$
Declarar c$,d$
Declarar e$
Imprimir "Hallo \
zusammen !"
Declarar INT GROBI
GROBI=500
a$=" el Hund va para \
hell brennenden Feuer en se \
a wärmen: ABER!!\
el Katze es ihm en el weg"
b$="nicht LEER"
c$="Test"
d$="fertig"
Imprimir
Imprimir
Case b$="":Imprimir" B es LEER"
Imprimir GROBI
Imprimir c$,d$,GROBI
waitinput

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

Hardware: NB Intel I9 - 16GByte RAM
15.10.2022  
 




RudiB.
ach......, el wichtigste vergessen....el Aufsplittung el Befehlszeilen con Backslash se natürlich, como en el unteren Listing, beibehalten voluntad.
 
XProfan X4
Xprofan X4
Rudolf Beske / München

Hardware: NB Intel I9 - 16GByte RAM
15.10.2022  
 




RudiB.
Es mein Intento (LISTING) el problema a lösen...
cls
Declarar zeile$,x%,pos%,pos2%,new_zeile$,next_zeile$,org_zeile$,End_kommentar$,kom%,array$[]
Declarar Zeit&,Expediente$
Datei$=Loadfile$("ÖFFNE:","*.prf")
Zeit&=&gettickcount
Asignar #1,Expediente$
reset #1
Imprimir "Working.....Please Wait"

Sinestar encargado EOF(#1)

    input #1,zeile$
    Org_Zeile$=Línea$
    '-----------------------------------------------------------------------------------------------------------------------
    '          Ganzzeilige Kommentare y Blockkommentare en Leerzeilen wandeln
    '-----------------------------------------------------------------------------------------------------------------------

    If (Left$(Trim$(Línea$),1)="'") Or (Left$(Trim$(Línea$),2)="//")

        Línea$=""
        Imprimir Org_zeile$
        continue

    EndIf

    If Left$(Línea$,2)="/*"

        Imprimir Org_zeile$
        kom%=1
        continue

    EndIf

    If Left$(Línea$,2)="*/"

        Imprimir Org_zeile$
        kom%=0
        continue

    EndIf

    If kom%=1

        Línea$=""
        Imprimir Org_zeile$
        continue

    EndIf

    '-----------------------------------------------------------------------------------------------------------------------
    '-----------------------------------------------------------------------------------------------------------------------
    '          Doppelpunkte en Cuerdas umwandeln
    '-----------------------------------------------------------------------------------------------------------------------

    Caso negativo right$(trim$(Línea$),1)=chr$(92)

        If instr(chr$(58),Línea$)

            pos%=0

            Whileloop Len(Línea$)

                If mid$(Línea$,&bucle,1)=chr$(34)

                    pos%=Not(pos%)

                EndIf

                If (pos%=1) And (mid$(Línea$,&bucle,1)=Chr$(58))

                    New_Zeile$=New_Zeile$+chr$(247)

                Más

                    new_Zeile$=new_Zeile$+mid$(Línea$,&bucle,1)

                EndIf

            EndWhile

            If pos%=1

                Línea$=Translate$(Línea$,chr$(58),chr$(247))

            Más

                Línea$=New_Zeile$
                new_zeile$=""

            Endif

        EndIf

    Endif

    '-----------------------------------------------------------------------------------------------------------------------
    '          Endkommentare abschneiden
    '-----------------------------------------------------------------------------------------------------------------------

    If (Instr("'",Trim$(Línea$),2)) Or (Instr("//",Trim$(Línea$),2))

        pos%=0
        End_kommentar$=""

        Whileloop Len(Línea$)

            If mid$(Línea$,&bucle,1)=chr$(34)

                pos%=Not(pos%)

            EndIf

            If (mid$(Línea$,&bucle,1)="'") And (pos%=0)

                End_kommentar$=Right$(Línea$,Len(Línea$)-&bucle+1)
                Línea$=Left$(Línea$,&bucle-1)
                Romper

            EndIf

            If (mid$(Línea$,&bucle,2)="//") And (pos%=0)

                End_kommentar$=Right$(Línea$,Len(Línea$)-&bucle+1)
                Línea$=Left$(Línea$,&bucle-1)
                Romper

            EndIf

        EndWhile

    EndIf

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

    Caso negativo right$(trim$(Línea$),1)=chr$(92)

        If Instr(":",Línea$)

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

            Mientras que 1

                Pos%=Instr(":",Línea$,pos2%)

                If pos%=0

                    Romper

                EndIf

                If right$(Línea$,1)=":"'Sprungmarker

                    romper

                EndIf

                If (Left$(Trim$(lower$(Línea$)),5)="case ") or (Left$(Trim$(lower$(Línea$)),8)="casenot ")

                    Pos2%=Instr(":",Línea$,pos%+1)

                    If pos2%=0

                        Romper

                    EndIf

                EndIf

                new_Zeile$=Left$(Línea$,pos%-1)
                new_Zeile$=Translate$(new_Zeile$,chr$(247),chr$(58))
                Imprimir new_zeile$
                new_Zeile$=""
                Línea$=right$(Línea$,Len(Línea$)-pos%)

            EndWhile

        EndIf

    Endif

    Línea$=Translate$(Línea$,chr$(247),chr$(58))
    Imprimir zeile$+" "+End_kommentar$
    End_kommentar$=""
    new_zeile$=" "

EndWhile

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

Hardware: NB Intel I9 - 16GByte RAM
15.10.2022  
 




Walter
Hier una erster Ansatz, el simplemente feststellt, si uno se en una Doppelpunkt innerhalb uno Cuerdas befindet oder no.
Bzgl. Case muss sólo todavía geklärt voluntad, si sólo el erste Doppelpunkt danach bleiben se o. cómo con más verfährt.
'## Kommentarzeilen son hier no berücksichtigt
'## caso es hier todavía no berücksichtigt
cls
Declarar Expediente$
declarar StringAn%,i%,en$,out$,a$[]
StringAn%=0' 0=Außerhalb uno Cuerdas, 1=Innerhalb uno Cuerdas
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 una Array escribir
    'Alle Signo el Línea durchlaufen
    for i%,len(en$)
    ' Feststellen, si uno se innerhalb uno Cuerdas befindet
    caso a$[i%-1]=Chr$(34) and StringAn%=0:StringAn%=1
    caso a$[i%-1]=Chr$(34) and StringAn%=1:StringAn%=0

    if a$[i%-1]=":"

        If 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

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

    endif

    endfor
    imprimir out$
    out$=""

EndWhile

Cerrar #1
Imprimir "FERTIG"
waitinput
 
19.10.2022  
 




RudiB.
¡Hola Walter,

...schön el todavía alguien en dieses Thema antwortet.

Su Ansatz es sí correcto, doch el Diablo steckt sí en el Detalle...
Wenn Yo z.B.: Un Programmzeile el una String beinhaltet, aber entonces con un Backslash en mehrere Zeilen aufgeteilt se.
siehe hier....
a$=" el Hund va para \
hell brennenden Feuer en se \
a wärmen: ABER!!\
el Katze es ihm en el weg"

hier haperst entonces gewaltig...

Yo weiß ya una solución a mein Problema en el allgemeinen, sin embargo sería Me gusta auch una solución dafür encontrar, si yo una Expediente Zeilenweise einlese ....
Lo son auch esta una solución .... hier debería entonces aber jede Línea por mehrere Abfragen laufen, qué natürlich muy viel Tiempo kostet.....

Yo eben gehofft, alguien ha un despertar Concepto, en el Yo no komme...

Saludo de München
Rudi
 
XProfan X4
Xprofan X4
Rudolf Beske / München

Hardware: NB Intel I9 - 16GByte RAM
19.10.2022  
 




Walter
Mein Programmstück kommt con su Code
a$=" el Hund va para \
hell brennenden Feuer en se \
a wärmen: ABER!!\
el Katze es ihm en el weg"

aber bestens zurecht...
 
19.10.2022  
 




Walter
Sorry - ya gesehen.
Schau Yo más a...
 
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 - war sólo una kleiner Fehler drin...
Jetzt va el!
'## Kommentarzeilen no berücksichtigt
'## caso no berücksichtigt
cls
Declarar Expediente$
declarar StringAn%,i%,en$,out$,a$[]
StringAn%=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]=":"

        If 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

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

    endif

    endfor
    imprimir out$
    out$=""

EndWhile

Cerrar #1
Imprimir "FERTIG"
waitinput
 
19.10.2022  
 




RudiB.
Yo arbeite en efecto dran.... aber scheinbar seh Yo, el Wald antes lauter Bäumen no.... oft es así simplemente...tener Yo ya así oft hier en el Foro erlebt...
 
XProfan X4
Xprofan X4
Rudolf Beske / München

Hardware: NB Intel I9 - 16GByte RAM
19.10.2022  
 




RudiB.
wow....kurz probiert con el Test-Listing, como hast Usted ahora el gemacht????
..muss Su código veces anschauen...
 
XProfan X4
Xprofan X4
Rudolf Beske / München

Hardware: NB Intel I9 - 16GByte RAM
19.10.2022  
 




Walter
Hier nun samt caso / caseNot:
Dabei tener Yo mich daran mantenido, dass normalerweise todos  auf caso folgenden Befehle en derselben Línea en true abgearbeitet voluntad, während en falso inmediatamente en el nächste Línea gesprungen se.
(Aus el Ayuda: Case N : BEF
Sombrero el Ausdruck N una Valor <> 0, se BEF ausgeführt, ansonsten va el Programmausführung en el nächste Línea...)
' Das Codestück teilt Befehlszeilen en ":" en neue Zeilen en,
' außer
' a) el ":" befindet se innerhalb uno Stringliterals; oder
' b) en caso/caseNot. Hier bleiben todos ":" en derselben Línea _nach_ una
' caso/caseNot obtener (allerdings bisher todavía sin Berücksichtigung de
' Umbrüchen langer Codezeilen)
' Kommentarzeilen son no berücksichtigt;
' el necesario ggf vorher ausgeschieden voluntad
cls
Declarar Expediente$
declarar StringAn%,i%,en$,out$,a$[]
declarar caseAn%,pos%
StringAn%=0
CaseAn%=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
    ' Falls caso oder caseNot drin: Position determinar
    pos%=instr("case ",lower$(en$))
    caso pos%=0:pos%=instr("casenot ",lower$(en$))

    if pos%=0' KEIN caso drin

        '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]=":"

            If 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

            out$=out$+a$[i%-1]' más Signo como :

        endif

        endfor

    más' caso o caseNot drin

        'Alle Signo el Línea a a caso durchlaufen
        for i%,pos%-1
        ' 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]=":"

            If 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

            out$=out$+a$[i%-1]' una más Signo como :

        endif

        endfor

    endif

    if pos%>0

        ' Rest el caso-Línea en un neue Línea escribir
        imprimir mid$(en$,pos%,len(en$)-pos%+1)

    más

        imprimir out$
        out$=""

    endif

EndWhile

Cerrar #1
Imprimir "FERTIG"
waitinput

Gerne nachfragen, sofern el Kommentare no ausreichen.
Fehler son natürlich posible...
 
19.10.2022  
 




Zum Quelltext


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

7.854 Views

Untitledvor 0 min.
Member 862464112.05.2024
Cyberangle03.02.2023
RudiB.02.02.2023
Normann Strübli31.01.2023
Más...

Themeninformationen

Dieses Thema ha 3 subscriber:

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


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie