Español
Fuente/ Codesnippets

Deleteinisection V100 Xprofan

 

Michael
Wodrich
Como lo sí wohl viele brauchen Yo el Sektionslöschen veces en XProfan v10.0 geschrieben.
Wer lo todavía no austesten kann -- EXE-Expediente con diesem Code es beigefügt.
KompilierenMarcaSeparación
!
eine ganze Sektion aus einer INI-Datei löschen
XProfan v 10.0  !!!
Autor: Michael Wodrich

Proc ErsetzeMetazeichen

    alle Metazeichen der regulären Ausdrücke werden hier "entschärft"
    Parameters s$
    Declare Metazeichen$,MLen%
    Vorsicht!!! Die Tilde muß als *erstes* Zeichen "entschärft" werden!!!
    Metazeichen$ = "~$^*+?|(){}[]."
    MLen% = Len(Metazeichen$)

    WhileLoop MLen%

        wird ein Metazeichen im String gefunden, dann wird das Escapezeichen "~" vorangestellt
        s$ = Translate$(s$,Mid$(Metazeichen$,&loop,1),"~"+Mid$(Metazeichen$,&loop,1))

    EndWhile

    Return s$

EndProc

Proc BlockWriteString

    Parameters Datei$, s$
    Declare Buffer#
    Dim Buffer#,Len(s$)+1
    String Buffer#,0 = s$
    BlockWrite Datei$, Buffer#, 0, Len( s$ )
    Dispose Buffer#

EndProc

Proc DeleteIniSection

    Parameters IniDatei$, SectionName$
    Declare SectionStart$, SectionEnde$, hIni&, IniGroesse&, IniContent$
    Declare StartPos&, xLen&, Erg$
    hier wird der Sektionsname in eckige Klammern gesetzt; er muß also ohne Klammern angegeben werden
    SectionStart$ = "[" + SectionName$ + "]"
    hier werden evtl. vorkommende Metazeichen ersetzt; die eckigen Klammern gehören auch dazu
    SectionStart$ = ErsetzeMetazeichen( SectionStart$ )
    jetzt wird das Metazeichen für den Zeilenanfang eingesetzt
    der Sektionsname wird also nur gefunden, wenn er ganz am Anfang steht (Leerzeichen+Tab erlaubt)
    SectionStart$ = "(?mi)^[ 	]*" + SectionStart$
    das Gleiche gilt für das Sektionsende; eine eckige öffnende Klammer am Zeilenbeginn
    SectionEnde$ = "(?m)^[ 	]*~["
    Ini-Datei in String einlesen
    IniGroesse& = FileSize( IniDatei$ )
    hIni& = Assign( IniDatei$ )
    OpenRW hIni&
    IniContent$ = GetChar$( hIni&, IniGroesse& )
    Close hIni&
    Erg$ = Match$( SectionStart$, IniContent$ )

    If Len(Erg$) > 0

        Sektion wurde gefunden
        StartPos im String merken und die Länge der Überschrift
        StartPos& = %MatchPos
        xLen& = %MatchLen
        Suche hinter der Überschrift nach dem nächsten Sektionsnamen
        Erg$ = Match$( SectionEnde$, Mid$(IniContent$,StartPos& + xLen&,IniGroesse&) )

        If Len(Erg$) = 0

            nicht gefunden; also ist es die letzte Sektion
            nur den Teil vor der zu löschenden Sektion behalten
            IniContent$ = Left$( IniContent$, StartPos& - 1 )

        Else

            Folgesektion gefunden; also zum Scalpell greifen...
            (%MatchPos + xLen& - 1) ist die Größe der Sektion
            IniContent$ = Del$( IniContent$, StartPos&, (%MatchPos + xLen& - 1) )

        EndIf

        BlockWriteString IniDatei$, IniContent$

    EndIf

EndProc

--------------------------------------
DER FOLGENDE CODE DIENT NUR ZUM TESTEN
--------------------------------------
eine INI erstellen und zeigen
cls
Declare Datei$, s$, hIni&
Datei$ = "C:WINDOWSKLEINER_TEST.INI"
s$ = "# so sieht die INI-Datei aus
[test1]
key1=alfa
key2=bravo
[test2]
key1=charly
key2=delta
[test3]
key1=echo
key2=fuchstritt
"
BlockWriteString Datei$,s$
Print s$
Print "
Jetzt [test2] löschen... (ENTER)"
WaitKey
eine Sektion löschen...
DeleteIniSection Datei$, "test2"
und zeigen
Cls
hIni& = Assign( Datei$ )
Reset hIni&

WhileNot EoF( hIni& )

    Input # hIni&, s$
    Print s$

EndWhile

Close hIni&
Print "
...Dies ist das Ergebnis... (ENTER)"
Print "
Jetzt noch eine Variante mit Leerzeichen und TAB vor dem Namen"
WaitKey
eine Variante mit Leerzeichen und Tab vor dem Namen
cls
Declare Datei$, s$, hIni&
Datei$ = "C:WINDOWSKLEINER_TEST.INI"
s$ = "# so sieht die INI-Datei aus
[test1]
key1=alfa
key2=bravo
[test2]
key1=charly
key2=delta
[test3]
key1=echo
key2=fuchstritt
"
BlockWriteString Datei$,s$
Print s$
Print "
Jetzt [test2] löschen... (ENTER)"
WaitKey
DeleteIniSection Datei$, "test2"
Cls
hIni& = Assign( Datei$ )
Reset hIni&

WhileNot EoF( hIni& )

    Input # hIni&, s$
    Print s$

EndWhile

Close hIni&
Print "
...Dies ist das Ergebnis... (ENTER)"
Print "
Jetzt noch eine Variante mit Groß-/Klein-Gemisch"
Print "(Suchwort ist nach wie vor qtest2q)"
WaitKey
eine Variante mit Groß-/Klein-Genisch (Suchwort ist nach wie vor "test2")
cls
Declare Datei$, s$, hIni&
Datei$ = "C:WINDOWSKLEINER_TEST.INI"
s$ = "# so sieht die INI-Datei aus
[test1]
key1=alfa
key2=bravo
[TeSt2]
key1=charly
key2=delta
[test3]
key1=echo
key2=fuchstritt
"
BlockWriteString Datei$,s$
Print s$
Print "
Jetzt [test2] löschen... (ENTER)"
WaitKey
DeleteIniSection Datei$, "test2"
Cls
hIni& = Assign( Datei$ )
Reset hIni&

WhileNot EoF( hIni& )

    Input # hIni&, s$
    Print s$

EndWhile

Close hIni&
Print "
...Dies ist das Ergebnis... (ENDE)"
Print "(INI wird wieder entfernt)"
Print "
Reguläre Ausdrücke in XProfan 10  --  einfach Klasse"
'./../../function-references/XProfan/waitkey/'>WaitKey
Borrar Expediente$
End

Schöne Grüße
Michael Wodrich

Como mich Comunidad-Refresh al Dateihochladen hindert, Yo el Expediente mi Webspace geparkt.

[...] 

@IF: lo wäre nett, si el Expediente en el Comunidad ziehst, así Yo ellos otra vez löschen kann...

299 kB
Hochgeladen:08.06.2006
Ladeanzahl120
Descargar
 
Programmieren, das spannendste Detektivspiel der Welt.
06.06.2006  
 



[quote:c027d71b85=Michael Wodrich]@IF: lo wäre nett, si el Expediente en el Comunidad ziehst, así Yo ellos otra vez löschen kann...[/quote:c027d71b85]
Hm Yo tener el Zip simplemente Deinem Contribución beigefügt - así landet se sí automáticamente auch en el Downloadcenter. Ists el qué Usted meintest?

[quote:c027d71b85]Como mich Comunidad-Refresh al Dateihochladen hindert, Yo el Expediente mi Webspace geparkt.[/quote:c027d71b85]
Nein nein el täuscht! Zwar se el Ladebalken des Navegador unterbrochen - pero la Upload se trotzdem ausgeführt!
 
08.06.2006  
 




Michael
Wodrich
Dann war Yo also otra vez veces a ungeduldig...

Gracias.

El neuen Möglichkeiten de XProfan 10 gefallen me siempre mejor.

Schöne Grüße
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
09.06.2006  
 



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

4.998 Views

Untitledvor 0 min.
H.Brill07.12.2023
liveFamilie30.08.2012

Themeninformationen

Dieses Thema ha 2 subscriber:

Michael Wodrich (2x)
iF (1x)


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