Español
Fuente/ Codesnippets

Compress Crunch Crypt Pack Speicherdatei Verschlüssel

 
- Página 1 -



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  
 



 
- Página 1 -



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  
 



 
- Página 2 -



Bernhard
Künzel
¡Hola Franco,
habe una wav Expediente erfolgreich con encima 38,2 MB gepackt
por lo tanto kann lo al Arbeitsspeicher no mentira.
 
13.09.2008  
 




Sebastian
Sprenger
Yo el Ursache...
Bernhards Archivos voluntad por el Packen no kleiner, pero größer y passen deshalb no en el Zona, en el Franco el Daten komprimieren lässt. Wenn Yo el Bereiche en 399 Bytes größer anlege:
Línea 27: Dim cbereich#,cbx&+399
Línea 29: Caso negativo RtlCompressBuffer(2,bbereich#,cbx&,cbereich#,cbx&+399,0,Addr(bworkspacesize&),workspace#)
Línea 106: Dim bereich#, x&+399
trabajo ellos todos.
Saludo, Sebastian
 
Profan² 7.0e, XProfan 9, 11.2a, FreeProfan32
Windows Vista Home Premium 32-Bit, 2.8 Ghz, 4 GB RAM
Windows Me, 1.8 Ghz, 256 MB RAM
13.09.2008  
 




Frank
Abbing
Ist no yo en el el Fall. Können el Daten no se envasarán, "stoppt" el Rutina rechtzeitig. Alles otro es sí auch Quatsch.
 
14.09.2008  
 




Bernhard
Künzel
¡Hola Sebastian,
du hast el richtige Ursache gefunden, por deine Los cambios voluntad el Archivos ahora gepackt, aber eben con un größeren Code como el Original.

¡Hola Franco,
lo betrifft todos Archivos wo el Compression una größeren Code producido.
el Fehlertext es en deinem Quellcode (siehe oben) instalado
Más
Disponer bereich#
Imprimir texto$+" podría no se envasarán."
EndIf

Mi gesendeten Archivos puede somit auch en dir no trabajo. Su XProfan no es una größeren Zona reservieren como en me.
Es en efecto kein Fehler en deinem Code, porque si la gepackte Coder größer se como el Original, es no muy sinnvoll esta a packen.
Aber el Fehlermeldung debería entonces lauten "keine Compression möglich"
Was como alles Quatsch ser se, verstehe Yo wirklich no.
 
14.09.2008  
 




Frank
Abbing
Der Packfunktion se sí el Grösse el Daten transferencia. Wird el Valor überschritten, debería el API el Compression stoppen, y en me tut ellos el auch. Yo erhalte el Programa-Meldung, aber sin choque.
 
14.09.2008  
 




Thomas
Freier
Super! Und rápidamente. Damit costumbre Yo en Verschlüsselung el Vereinsdaten no Gedanken mehr hacer. El *.dbf Archivos waren otra vez einsetzbar y el el Kompressionswerte lagen en 70%.
 
Gruß Thomas
Windows XP SP2, XProfan X2
14.09.2008  
 




Frank
Abbing
Exactamente, Thomas. Yo voluntad veces "Verschlüsselung" con en el Titel aufnehmen.

@Sebastian: Hab deine Los cambios en el código instalado, el 400 Byte tun niemandem weh, si dafür überall funktioniert.
 
14.09.2008  
 




E.T.
Tiempo pregunta ne: qué es el eigentlich para una Formato, qué como fuera kommt.
Können el Datein entonces sólo dieser Rutina otra vez entpackt voluntad ??

NACHTRAG: Kann Yo así auch una ganzen Ordner sicher packen (Statt Dateiname un directorio transferencia) ??

Sí.

Wenn du una ganzen Ordner packen willst, musst du el Daten el individual Files selber verwalten. Also dir una propio Formato dafür schaffen.
 
Grüße aus Sachsen... Mario
WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte...
15.12.2008  
 



Zu Erstens glaub Yo "Ja", a Zweitens glaub Yo "Nein".
 
15.12.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.188 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