Français
Source/ Codesnippets

Compress Crunch Crypt Pack Speicherdatei Verschlüssel

 

Frank
Abbing
données saisir sans Dll, seulement mittels API.
================================================================================
================================================================================/
données saisir/entpacken sans Dll, seulement mittels API.
© 2008 Frank Abbing, http://frabbing.de
Def RtlCompressBuffer(8) !"ntdll.dll", "RtlCompressBuffer"
Def RtlDecompressBuffer(6) !"ntdll.dll", "RtlDecompressBuffer"
Def RtlGetCompressionWorkSpaceSize(3) !"ntdll.dll", "RtlGetCompressionWorkSpaceSize"
Def RtlMoveMemory(3) !"kernel32.dll", "RtlMoveMemory"
Speicherbereich saisir. paramètre: (Speicherbereich, Anzahl Bytes im Speicherbereich)

Proc CompressBuffer

    Paramètres bbereich#, cbx&
    Déclarer cstatus&, bworkspacesize&, fworkspacesize&, cbereich#, workspace#
    cstatus&=0

    Si non RtlGetCompressionWorkSpaceSize(2, Addr(bworkspacesize&), Addr(fworkspacesize&))

        Faible workspace#,bworkspacesize&
        Faible cbereich#,cbx&+400

        Si non RtlCompressBuffer(2,bbereich#,cbx&,cbereich#,cbx&+400,0,Addr(bworkspacesize&),workspace#)

            Claire bbereich#
            Long bbereich#,0=cbx&
            RtlMoveMemory(bbereich#+4,cbereich#,bworkspacesize&)
            cstatus&=bworkspacesize&+4

        EndIf

        Dispose workspace#
        Dispose cbereich#

    Endif

    Retour cstatus&
    Rückgabe: Anzahl qui gepackten Bytes. qui gepackten données wurden dans den übergebenen Speicherbereich kopiert.

ENDPROC

Originale Speichergrösse ermitteln. paramètre: (gepackter Speicherbereich#)

Proc GetDecompressSize

    Paramètres bbereich#
    Retour Long(bbereich#,0)

ENDPROC

Speicherbereich entpacken. paramètre: (gepackter Speicherbereich, Anzahl Bytes im gepackten Speicherbereich, freier Speicherbereich)

Proc DecompressBuffer

    Paramètres bbereich#, cbx&, cbereich#
    Déclarer bworkspacesize&

    Si non RtlDecompressBuffer(2,cbereich#,Long(bbereich#,0),bbereich#+4,cbx&-4,Addr(bworkspacesize&))

        Retour bworkspacesize&

    EndIf

    Retour 0
    Rückgabe: Anzahl qui entgepackten Bytes.

ENDPROC

================================================================================
================================================================================/
====> HAUPTPROGRAMM
Déclarer bereich#, bereich2#, text$, x&, xcopy&, newbytes&
Cls

Tandis que 1

    text$=LoadFile$("Datei zum saisir aussuchen",»)

    Si text$<>»

        saisir testen
        x&=FileSize(text$)
        xcopy&=x&

        Si x&

            Faible bereich#, x&+400
            BlockRead(text$, bereich#, 0, x&)
            newbytes&=CompressBuffer(bereich#, x&)

            Si newbytes&

                Set("Décimal",2)
                Imprimer "Dateiname: "+text$
                Imprimer "Originalgrösse liegt chez "+Str$(x&)+" Bytes, comprimiert chez "+Str$(newbytes&)+" Bytes."
                Imprimer "Packrate liegt chez "+Str$(100-(newbytes&*100/x&))+" Prozent."
                text$=text$+".pck"
                BlockWrite text$, bereich#, 0, newbytes&
                Dispose bereich#
                Entpacken testen
                x&=FileSize(text$)

                Si x&

                    Faible bereich#, x&
                    BlockRead(text$, bereich#, 0, x&)
                    newbytes&=GetDecompressSize(bereich#)
                    Faible bereich2#,newbytes&
                    x&=DecompressBuffer(bereich#, x&, bereich2#)

                    Si x&

                        text$=text$+".org"
                        BlockWrite text$, bereich2#, 0, x&
                        Imprimer "Dateiname: "+text$
                        Imprimer "Decomprimierte Originalgrösse beträgt "+Str$(x&)+" Bytes."
                        Imprimer

                    D'autre

                        Imprimer text$+" konnte pas entpackt volonté."
                        Imprimer

                    EndIf

                    Dispose bereich2#
                    Dispose bereich#

                EndIf

            D'autre

                Dispose bereich#
                Imprimer text$+" konnte pas être emballés."

            EndIf

        EndIf

    D'autre

        BREAK

    EndIf

Endwhile

WaitInput
Fin
 
04.09.2008  
 



gentil ! [...] 
 
04.09.2008  
 




Frank
Abbing
Nachtrag: Gibt on comme ersten paramètre chez RtlCompressBuffer() et RtlDecomressBuffer() anstelle qui 2 une $102 à, ensuite erreicht on une höhere Packrate. Allerdings sur coûter qui Geschwindigkeit.
 
04.09.2008  
 



comment pourrait on am besten sûrement vérifier, si cet Funktion sur dem System aussi bereitsteht? avec XProfan ImportDLL pour Funktion chercher, si le DLL existert?
 
04.09.2008  
 




Frank
Abbing
APIs LoadLibrary() et ensuite GetProcAddress(). So mach ego dans Assembler. Hatte es ici pas gemacht, weil es aussi so chez mir bien funktionierte. Pour cette volonté sous 98 qui Funktionen pas trouvé, au cours de vous dans meiner Assemblerversion très wohl trouvé volonté. mais mir scheint, là existieren vous zwar, avons mais aucun Auswirkungen.
Ab XP (Start qui Documentation) sommes qui NTDLL.DLL-Funktionen mais sûrement vorhanden, tout autor empfehle je plutôt une Betriebssystem-Test.
 
04.09.2008  
 




Jac
de
Lad
une typische Frank-Genialität.
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
05.09.2008  
 




Michael
Wodrich
oui, là schliesse je mich à...
 
Programmieren, das spannendste Detektivspiel der Welt.
06.09.2008  
 




Frank
Abbing
 
06.09.2008  
 




Bernhard
Künzel
Habe avec qui Compress.exe getestet, wobei chez manchen Grafiken une Fehlermeldung erscheint.
trop wenig grenier pour Bereichs-Variable! la ligne 413!
Im Anhang sommes 4 Grafiken, wohin cet Fehlermeldung erscheint.

95 kB
Hochgeladen:07.09.2008
Downloadcounter180
Download
 
07.09.2008  
 




Frank
Abbing
quelle Version Windows (s'il te plaît dans qui Signatur angeben )?
Huh, la ligne 413? Soviel Zeilen hat qui Code oui chez Weitem pas.
là qui Source beigelegt ist, peux du volontiers qui Ursache erforschen. mon Tests verliefen alle correct.
 
13.09.2008  
 




Bernhard
Künzel
allô Frank,
Win Version XP Home SP2
Profan Version XProfan11ßRC9
Test avec deiner Compress.exe:
dans qui MessageBox venez qui Fehlermeldung "Zu wenig grenier pour Bereichs-Variable!"
la ligne 413! et im Profanfenster steht ".....konnte pas emballé werden"
avec deinem Quellcode:
ici venez seulement qui annonce im Profanfenster ".....konnte pas emballé werden"

lg
Bernhard
 
13.09.2008  
 




Frank
Abbing
Sieht aus, comme wäre dein Arbeitsspeicher zur Neige gagangen. Profan peux so viel grenier pas plus reservieren. c'est ensuite ne...aucune Bug, daher aucun Fehlermeldung, mais un Abbruch avec information.
je suis deswegen so pingelig, là je simple seulement sûrement se mettre voudrais, dass qui Code correct fonctionne.
 
13.09.2008  
 




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

18.743 Views

Untitledvor 0 min.
p.specht01.06.2018
Erasmus.Herold21.01.2016
Profanet16.01.2016
Julian Schmidt06.01.2013
plus...

Themeninformationen



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