Español
Fuente/ Codesnippets

Compress Crunch Crypt Pack Speicherdatei Verschlüssel

 

Frank
Abbing
Daten packen sin Dll, sólo mittels API.
================================================================================
================================================================================/
Daten packen/entpacken sin Dll, sólo mittels API.
© 2008 Franco 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 packen. Parámetro: (Speicherbereich, Anzahl Bytes en el Speicherbereich)

Proc CompressBuffer

    Parámetros bbereich#, cbx&
    Declarar cstatus&, bworkspacesize&, fworkspacesize&, cbereich#, workspace#
    cstatus&=0

    Caso negativo RtlGetCompressionWorkSpaceSize(2, Addr(bworkspacesize&), Addr(fworkspacesize&))

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

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

            Claro bbereich#
            Largo bbereich#,0=cbx&
            RtlMoveMemory(bbereich#+4,cbereich#,bworkspacesize&)
            cstatus&=bworkspacesize&+4

        EndIf

        Disponer workspace#
        Disponer cbereich#

    Endif

    Volver cstatus&
    Rückgabe: Anzahl el gepackten Bytes. El gepackten Daten fueron en el übergebenen Speicherbereich kopiert.

ENDPROC

Originale Speichergrösse ermitteln. Parámetro: (gepackter Speicherbereich#)

Proc GetDecompressSize

    Parámetros bbereich#
    Volver Largo(bbereich#,0)

ENDPROC

Speicherbereich entpacken. Parámetro: (gepackter Speicherbereich, Anzahl Bytes en el gepackten Speicherbereich, freier Speicherbereich)

Proc DecompressBuffer

    Parámetros bbereich#, cbx&, cbereich#
    Declarar bworkspacesize&

    Caso negativo RtlDecompressBuffer(2,cbereich#,Largo(bbereich#,0),bbereich#+4,cbx&-4,Addr(bworkspacesize&))

        Volver bworkspacesize&

    EndIf

    Volver 0
    Rückgabe: Anzahl el entgepackten Bytes.

ENDPROC

================================================================================
================================================================================/
====> HAUPTPROGRAMM
Declarar bereich#, bereich2#, texto$, x&, xcopy&, newbytes&
Cls

Mientras que 1

    texto$=LoadFile$("Datei para Packen aussuchen","")

    If texto$<>""

        Packen testen
        x&=FileSize(texto$)
        xcopy&=x&

        If x&

            Dim bereich#, x&+400
            BlockRead(texto$, bereich#, 0, x&)
            newbytes&=CompressBuffer(bereich#, x&)

            If newbytes&

                Conjunto("Decimals",2)
                Imprimir "Dateiname: "+texto$
                Imprimir "Originalgrösse liegt en "+Str$(x&)+" Bytes, comprimiert en "+Str$(newbytes&)+" Bytes."
                Imprimir "Packrate liegt en "+Str$(100-(newbytes&*100/x&))+" Prozent."
                texto$=texto$+".pck"
                BlockWrite texto$, bereich#, 0, newbytes&
                Disponer bereich#
                Entpacken testen
                x&=FileSize(texto$)

                If x&

                    Dim bereich#, x&
                    BlockRead(texto$, bereich#, 0, x&)
                    newbytes&=GetDecompressSize(bereich#)
                    Dim bereich2#,newbytes&
                    x&=DecompressBuffer(bereich#, x&, bereich2#)

                    If x&

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

                    Más

                        Imprimir texto$+" podría no entpackt voluntad."
                        Imprimir

                    EndIf

                    Disponer bereich2#
                    Disponer bereich#

                EndIf

            Más

                Disponer bereich#
                Imprimir texto$+" podría no se envasarán."

            EndIf

        EndIf

    Más

        BREAK

    EndIf

EndWhile

WaitInput
End
 
04.09.2008  
 



Nett ! [...] 
 
04.09.2008  
 




Frank
Abbing
Apéndice: Gibt uno como ersten Parámetro en RtlCompressBuffer() y RtlDecomressBuffer() anstelle el 2 una $102 a, entonces erreicht uno una höhere Packrate. Aunque en Kosten el Geschwindigkeit.
 
04.09.2008  
 



Como podría uno al besten sicher prüfen, si esta Función en el Sistema auch bereitsteht? Mit XProfan ImportDLL después de Función suchen, si la DLL existert?
 
04.09.2008  
 




Frank
Abbing
APIs LoadLibrary() y luego GetProcAddress(). So mach ego en Ensamblador. Hatte lo hier no gemacht, porque lo auch así en me bien funktionierte. Dafür voluntad bajo 98 el Características No se ha encontrado, während ellos en meiner Assemblerversion muy wohl gefunden voluntad. Aber me scheint, hay existieren ellos zwar, haben pero no Auswirkungen.
Ab XP (Start el Documentación) son el NTDLL.DLL-Características aber sicher disponible, por lo tanto empfehle Yo más una Betriebssystem-Test.
 
04.09.2008  
 




Jac
de
Lad
Un typische Franco-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
Sí, como schliesse Yo mich a...
 
Programmieren, das spannendste Detektivspiel der Welt.
06.09.2008  
 




Frank
Abbing
 
06.09.2008  
 




Bernhard
Künzel
Posesiones con el Compress.exe getestet, wobei en manchen Gráficos una Fehlermeldung erscheint.
Zu wenig Speicher para Bereichs-Variable! Línea 413!
Im Anhang son 4 Gráficos, wo esta Fehlermeldung erscheint.

95 kB
Hochgeladen:07.09.2008
Ladeanzahl184
Descargar
 
07.09.2008  
 




Frank
Abbing
Welche Windowsversion (Por favor, en el Signatur angeben )?
Huh, Línea 413? Soviel Zeilen ha el Code sí en Weitem no.
Como el Source beigelegt es, kannst du gerne el Ursache erforschen. Mi Tests verliefen todos fehlerfrei.
 
13.09.2008  
 




Bernhard
Künzel
¡Hola Franco,
Win Versión XP Home SP2
Profano Versión XProfan11ßRC9
Test con deiner Compress.exe:
In el MessageBox kommt el Fehlermeldung "Zu wenig Speicher para Bereichs-Variable!"
Línea 413! y en el Profanfenster es ".....podría no gepackt werden"
Mit deinem Quellcode:
Hier kommt sólo el Meldung en el Profanfenster ".....podría no gepackt werden"

lg
Bernhard
 
13.09.2008  
 




Frank
Abbing
Sieht de, como wäre dein Arbeitsspeicher a Neige gagangen. Profano kann así viel Speicher no mehr reservieren. Es entonces kein Programmfehler, por lo tanto no Fehlermeldung, pero una Abbruch con Information.
Yo bin deswegen así pingelig, como Yo simplemente sólo sicher stellen möchte, dass el Code fehlerfrei se ejecuta.
 
13.09.2008  
 




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

19.261 Views

Untitledvor 0 min.
p.specht01.06.2018
Erasmus.Herold21.01.2016
Profanet16.01.2016
Julian Schmidt06.01.2013
Más...

Themeninformationen



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