Lieber Besucher, herzlich willkommen bei: AnnoZone Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.
Zitat
schade, dass ich es nicht benutzen kann :-(
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »mrboese« (22. Juni 2010, 15:29)
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »sanktdonut« (22. Juni 2010, 17:24)
Zitat
* Unterstützte Betriebssysteme: Windows 7; Windows Server 2003 Service Pack 2; Windows Server 2008; Windows Server 2008 R2; Windows Vista Service Pack 1; Windows XP Service Pack 3
o Windows XP SP3
o Windows Server 2003 SP2
o Windows Vista SP1 oder höher
o Windows Server 2008 (nicht unterstützt unter der Server Core-Rolle)
o Windows 7
o Windows Server 2008 R2 (nicht unterstützt unter der Server Core-Rolle)
Zitat
Original von mrboese
Version 1.0.3.2 ist fertig:
Da jetzt alles funktioniert, gibt es nur oberflächliche Änderungen:
Bei "Add files", "Add folder" und "Add folder as root" werden bereits existierende Dateien ersetzt.
Zitat
Original von mrboese
es war sehr schwierig, Hoenir's D-Code in C# umzuwandeln (Unmanaged zu managed).
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
public static byte[] Decrypt(byte[] buffer) { if (buffer.Length == 0) return buffer; //if (buffer.Length % 2 != 0) //{ // List<byte> _buffer = new List<byte>(buffer); // _buffer.Add(0); // buffer = _buffer.ToArray(); //} MemoryStream stream=new MemoryStream(buffer); BinaryReader reader = new BinaryReader(stream); //Collect short List<short> collectedshortList = new List<short>(); //for (int i = 0; i < buffer.Length / 2; i++) while(true) { collectedshortList.Add(reader.ReadInt16()); if (reader.BaseStream.Position + 2 > reader.BaseStream.Length) break; } reader.Close(); //Output MemoryStream writerStream=new MemoryStream(); BinaryWriter writer = new BinaryWriter(writerStream); int x = 0xA2C2A; short y = 0; for (int i = 0; i < collectedshortList.Count; i++) { x = x * 0x343FD + 0x269EC3; y = (short)(x >> 16 & 0x7FFF); short w = (short)(collectedshortList[i] ^ y); writer.Write(w); } if (buffer.Length % 2 != 0) { writer.Write(buffer[buffer.Length - 1]); } byte[] output = writerStream.ReadAll(); return output; } |
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
public static object ReadToStructure(BinaryReader reader, Type outputtype) { unsafe { object output; object testInstance = Activator.CreateInstance(outputtype); int sz = Marshal.SizeOf(testInstance); IntPtr buffer = Marshal.AllocCoTaskMem(sz); Marshal.Copy(reader.ReadBytes(sz), 0, buffer, sz); output = Marshal.PtrToStructure(buffer, outputtype); Marshal.FreeCoTaskMem(buffer); return output; } } |
Zitat
Original von mrboese
Auch Pointer sind nicht direkt realisierbar (sind aber möglich). Die gehören zum "unsafe" Code.
Zitat
Original von mrboese
Demzufolge kann man auch nicht ein Byte-Array in ein Struct "pressen". Das wird dort über eine spezielle Klasse gelöst ("Marshal").
Zitat
Original von mrboese
Und natürlich ist es auch leichter, eine Benutzeroberfläche zu erstellen, wie man sieht.
Zitat
Original von mrboese
Ach ja: Das Laden bei deinem Explorer ist langsamer als bei meinem
Zitat
Das array->struct ist eher ein kleiner Hack von mir, weil ich bei solchen Werkzeugen immer lieber mit structs arbeite als mit einzelnen Leseoperationen, ist viel übersichtlicher und effizienter.
Zitat
Joa hab damit au schon mal gearbeitet. Mit Qt für D dürfte das ähnlich einfach sein.
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<widget class="QToolButton" name="readMemoryButton" > <property name="geometry" > <rect> <x>10</x> <y>150</y> <width>41</width> <height>41</height> </rect> </property> <property name="text" > <string>MR</string> </property> </widget> ... |
Quellcode |
|
1 2 3 4 |
<UniformGrid Rows="4" Columns="5"> ** <Button Name="readMemoryButton" Content="MR" Width="41" Height="41"/> ... </UniformGrid> |
Quellcode |
|
1 2 3 4 5 |
<Canvas> <Button Name="readMemoryButton" Content="MR" Width="41" Height="41" Canvas.Left="10" Canvas.Top="150"/> ... </Canvas> |
Zitat
Ist auch nichts optimiert, nur ein kleines Werkzeug zum Entpacken. Normalerweise mach ich bei sowas nicht mal ne GUI
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »UUUBerlin888« (7. Juli 2010, 16:40)