schnellere Methode wäre dies: PureBoard • Thema anzeigen - Simpler 32/64-Bit-Dis-Assembler in PB
PureBasic
-
-
-
Zitat von AHT;833947
Mit XProfan ging das nicht (das Proggie hakt sonst)
Ich machs eigentlich immer so, ohne Probleme.
-
Am Anfang müsste man in XProfan fast 20 Sekunden warten, bevor man überhaupt sieht, das irgendwas passiert.
Bringen tut das da auch nicht viel. In PureBasic konnte ich das noch mal versuchen - das hängt die Sache nicht so lange beim Auslesen der riesigen Struktur. Die PureBasic Version ist aber sowieso noch nicht optimiert - in Profan führe ich zum Beispiel direkte Calls aus, in PureBasic nicht.
Ich möchte auch ganz gerne mal zeigen, um wie viel schneller die Sprache bei gleichem (hier sogar schlechterem) Quelltext ist. -
Wenn Du calls in PB ausführen möchtest, nutze bitte keine der
CallFunction, CallFunctionFast usw. funktionen, sondern Prototypes!
CallFunction können nur Integer und der Compiler kann, wie in XProfan auch,
die Anzahl der übergebenen Parameter nicht checken.
Mit Prototypes kannste auch double, float und z.B. pseutotypes übergeben.Ist zwar für manchen Einsteiger erstmal schwerer zu verstehen, aber unbedingt zu empfehlen. Genauso wichtig wie EnableExplicit
Gruß
Thomas -
Danke für den Tipp.
In der Regel braucht man die Prototypes dafür aber ja gar nicht. Bis auf einige Sachen aus der PSAPI.DLL lässt sich eigentlich das wichtigste direkt ansprechen. -
Zitat von AHT;834007
Danke für den Tipp.
In der Regel braucht man die Prototypes dafür aber ja gar nicht. Bis auf einige Sachen aus der PSAPI.DLL lässt sich eigentlich das wichtigste direkt ansprechen.
PSAPI solltest Du nicht Importieren, da je nach Windows-Version unterschiedliche Libs zu importieren sind, entweder kernel32.lib oder psapi.lib.
Besser dynamisch laden in diesem Fall.
Hier ein Beispiel, es wird die Unicode-Version geladen. Durch den Pseudotype
im Prototype funktioniert es aber unter ASCII oder Unicode!Code
Alles anzeigen; DWORD WINAPI GetModuleBaseName( ; __in HANDLE hProcess, ; __in_opt HMODULE hModule, ; __out LPTSTR lpBaseName, ; __in DWORD nSize ; ); Prototype GetModuleBaseName(hProcess, hModule, lpBaseName.p-Unicode, nSize.l) Global GetModuleBaseName.GetModuleBaseName Define hPsapi = OpenLibrary(#PB_Any, "Psapi.dll") If hPsapi GetModuleBaseName = GetFunction(hPsapi, "GetModuleBaseNameW") EndIf
-
Ja, richtig. Kann mich erinnern, diesbezüglich was bei Vista gelesen zu haben. Ist dann auch klar, warum die nicht standardmäßig importiert wird.
Danke für das Prototype Beispiel - die Hilfe ist da mit der Messagebox etwas dürftig.
Es kommt mir vor, als wäre es Weihnachten. Die Leute, die die Sprache geschrieben haben, wissen was man zum Programmieren braucht. -
Erste DLL mit der Sprache erstellt - geht wunderbar einfach durch die hervorragende API Unterstützung..
Alles, was vorher mit Profan nicht funktionierte, läuft jetzt bestens. -
Ich progge jetzt seit über 5 Jahren mit der Sprache - und ich muss sagen, die Sprache ist jeden Cent wert, den ich damals dafür bezahlt habe.
Der Einstieg ging sehr schnell und hat damals nur einige Tage gedauert. Auch native API-Programmierung unterstützt die Sprache wie keine andere, was gerade für mich sehr interessant ist. Auch das Umschreiben von zigtausend Zeilen Codes war kein Problem. Die Sprache ist wirklich gut. -
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!