English
Source / code snippets

Deleteinisection V100 XProfan

 

Michael
Wodrich
there it Yes well many need have I the Sektionslöschen time in XProfan v10.0 written.
Who not yet debug can -- EXE-File of these code is enclosed.
CompileMarkSeparation
!
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
Erase File$
End

Best wishes
Michael Wodrich

there me the Community-Refresh on the Dateihochladen hindert, have I The File my Webspace parked.

[...] 

@iF: it would nice, if you The File in the community ziehst, so I tappt im dunkeln again delete can...

 
Programmieren, das spannendste Detektivspiel der Welt.
06/06/06  
 



[quote:c027d71b85=Michael Wodrich]@iF: it would nice, if you The File in the community ziehst, so I tappt im dunkeln again delete can...[/quote:c027d71b85]
Hm I Have The zipper simply Your Posting enclosed - so alights itself Yes automatically in Downloadcenter. Ists the what You meant?

[quote:c027d71b85]there me the Community-Refresh on the Dateihochladen hindert, have I The File my Webspace parked.[/quote:c027d71b85]
No No the täuscht! of course becomes the Ladebalken the Browser interrupted - but the Upload becomes nevertheless carryed out!
 
06/08/06  
 




Michael
Wodrich
then i was means again To eager...

Thank you.

The new Opportunities of XProfan 10 fallen me always rather.

Best wishes
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
06/09/06  
 



Zum Quelltext


Topictitle, max. 100 characters.
 

Systemprofile:

no Systemprofil laid out. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Please register circa a Posting To verfassen.
 

Topic-Options

5.086 Views

Untitledvor 0 min.
H.Brill12/07/23
liveFamilie08/30/12

Themeninformationen

this Topic has 2 subscriber:

Michael Wodrich (2x)
iF (1x)


Admins  |  AGB  |  Applications  |  Authors  |  Chat  |  Privacy Policy  |  Download  |  Entrance  |  Help  |  Merchantportal  |  Imprint  |  Mart  |  Interfaces  |  SDK  |  Services  |  Games  |  Search  |  Support

One proposition all XProfan, The there's!


My XProfan
Private Messages
Own Storage Forum
Topics-Remember-List
Own Posts
Own Topics
Clipboard
Log off
 Deutsch English Français Español Italia
Translations

Privacy Policy


we use Cookies only as Session-Cookies because of the technical necessity and with us there no Cookies of Drittanbietern.

If you here on our Website click or navigate, stimmst You ours registration of Information in our Cookies on XProfan.Net To.

further Information To our Cookies and moreover, How You The control above keep, find You in ours nachfolgenden Datenschutzerklärung.


all rightDatenschutzerklärung
i want none Cookie