Hallo Himitsu,
Zitat:
* Es ist alles gemäß
OOP in eine Klasse gewandert.
* Und dafür gibt es nun eine Variante mit Streams.
* Die Variante mit den Lese-/Schreibprozeduren wurde entfernt.
* Die Fehlerbehandlung wurde von Fehlercodes auf Exceptions umgestellt.
Das alles hatte ich absichtlich nicht so vorgesehen. Ziel war es diese
Unit so kompakt wie möglich zu machen, möglichst keine Datensegemente=BSS benutzen (was jetzt bei deinen Änderungen wieder der Fall ist), keinerlei
VCL wie Klassen oder TStreams oder Exceptions einzusetzen usw.
Diese
Unit dient mir für meinen EXE-Packer-Stub, also als Bestandteil des Stubs für selbst entpackende Anwendungen. Alle deine Änderungen sind aus dieser Sicht sehr ungünstig. Das betrifft eben auch die bedingte Compilation für die einzelnen Bestandteile, sprich wenn man möchte kann man auch nur die LHDecode() alleine compilieren, eben für Entpcker die nicht packen können müssen.
Mit TStreams konnte man in meinem Original auch arbeiten indem man die Methoden TStream.ReadBuffer() und .WriteBuffer() der LHEncode() und LHDecode() Funktionen als Callbacks übergibt.
Und ändere bitte das Copyright folgendermaßen ab:
Original Authors: Hagen Reddmann, (c) 2000 HaReddmann [at] t-online [dot] de
Modifications: (c) 2008 Arvid Winkelsdorf, info [at] digivendo [dot] de
(c) 2010 himitsu, himitsu [at] fnse [dot] de
Ich weiß nicht was Heiko damit zutun haben sollte, oder bist du Heiko Behrens ? Auf alle Fälle wüsste ich nicht das Heiko der Initiator und Developer dieser Sourcen war, es sei denn ich habe eine gespaltene Persönlichkeit und weiß nichts davon das eine dieser Persönlichkeiten in mir drinnen Heiko heist
Gruß Hagen
[edit]
PS: bitte nicht persönlich nehmen, aber mein Programmierstil in Punkto Sourceformatierungen gefällt mir weit besser. Warum schreibst du alle Bezeichner mit Großbuchstaben am Anfang, hast du dir mal die Borland Sourcen seit BP7 angeschaut ? Auch dieses elenede "Hochziehen" des begin ist eine echte Epedemie die um sich greift. Es zerstört komplett die schenlle visuelle Erfassbarkeit der Struktur der Source. Ne echte Unart ist das geworden.
Wenn ich ehrlich bin würde ich es nur ungern sehen das in diesem Source mein Name drinnen steht. Es geht ja auch um mein "Image" und so würde ich niemals einen Source formatieren.
Nichts für ungut, letzendlich zählt das es Anwender gibt die damit was anfangen können.
PPS:
ich kann's ja nicht lassen, einige der Bezeichner schreibst du mit Großbuchstaben wie Begin, End usw. aber Bezeichner wie xor,and,shr nicht. Das ist inkonsistent.
PPPS: Const lhModeValue: Array[TLHMode] of LongInt = (0, $01, $20, $40, $80, $FF);
Diese Zeile legt im BSS=vorinitialisierten Datensegement dieses array[] ab.
Desweiteren benötigen auch ResourceStrings Speicher im BSS.
Für zb. einen EXE/
DLL Entpacker der seinen Code zb. in andere Prozesse injeziert bekommt sind solche BSS Datensegmente übel. Eben ein Grund warum im original keinerlei Datensegemente benutzt wurden.
PPPPS: durch die Kapselung in einer Klasse dürfte der
ASM Code auch nicht mehr funktionieren, zumindest würde ich es nicht garantieren wollen. Der
ASM Code geht von einem Record aus.
[/edit]