Français
Source/ Codesnippets

Deleteinisection V100 Xprofan

 

Michael
Wodrich
là es oui wohl viele brauchen habe je cela Sektionslöschen la fois dans XProfan v10.0 geschrieben.
qui es encore pas austesten peux -- EXE-Dossier avec diesem Code ist beigefügt.
KompilierenMarqueSéparation
!
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
Effacer Dossier$
Fin

belle Grüße
Michael Wodrich

là mich qui Community-Refresh am Dateihochladen hindert, habe je qui Dossier meinem Webspace geparkt.

[...] 

@iF: es wäre gentil, si Du qui Dossier dans qui Community ziehst, avec cela je vous wieder effacer peux...

 
Programmieren, das spannendste Detektivspiel der Welt.
06.06.2006  
 



[quote-part:c027d71b85=Michael Wodrich]@iF: es wäre gentil, si Du qui Dossier dans qui Community ziehst, avec cela je vous wieder effacer peux...[/quote-part:c027d71b85]
Hm je hab qui Zip simple Deinem Beitrag beigefügt - avec cela landet sich oui automatisch aussi im Downloadcenter. Ists cela quoi Du meintest?

[quote-part:c027d71b85]là mich qui Community-Refresh am Dateihochladen hindert, habe je qui Dossier meinem Webspace geparkt.[/quote-part:c027d71b85]
non non cela täuscht! Zwar wird qui Ladebalken des Browser unterbrochen - mais qui Upload wird quand même fonctionnement!
 
08.06.2006  
 




Michael
Wodrich
ensuite était je alors wieder la fois trop ungeduldig...

merci.

qui neuen Opportunités de XProfan 10 plaisons mir toujours besser.

belle Grüße
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
09.06.2006  
 



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

5.106 Views

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

Themeninformationen

cet Thema hat 2 participant:

Michael Wodrich (2x)
iF (1x)


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