![]() |
SysInfo
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
JUHU! Mein erstes nonVCL-Programm. Dieses Programm spuckt ein paar Informationen zu den Usern und zum Rechner aus. Ggf. erweitere ich es noch. Ihr braucht allerdings Windows eNTe, 2kay oder X(perience)P(roblems). Für den Source braucht ihr noch die Win32-Header-Übersetzungen der JEDIs. So, ruhig Kritik äußern. Ist halt mein 1. nonVCL-Programm. Chris PS: Nur 200KB. *hähä* |
Bei mir ist es 362 KB groß, deine Exe. Mit VCL wäre es wohl nur 25 kB größer geworden.
Und wo ist das nonVCL?
Code:
Dialogs, Classes und Graphics gehören zur VCL. versuch das ganze mal nur mit Windows, Messages und ShellAPI. Die Stringlist ersetzt du durch ein dynamisches Array of String. Die SysUtils kannst du eventuell auch noch rausschmeißen, ich habe jetzt nicht gekuckt, für was du die brauchst.
uses
SysUtils, Windows, Messages, ShellApi, Dialogs, JwaLm, CommCtrl, System, Classes, Graphics; Du wärst echt billiger mit der VCL und ein paar API Funktionen weggekommen. Und das, was an Infos rauskommt, ist auch nicht gerade der Hammer. Kuck dir mal mein SysInfo an. Desweiteren kommt es zu einer Fehlermeldung, wenn man dein Pogramm startet ohne eine CD im laufwerk zu haben. |
Hi Luckie,
Entschuldigung, dass mein erstes nonVCL-Programm dem Großmeister der nonVCL nicht gerecht ist! :x :evil: Zu deiner Beruhigung: Die Uses sehen jetzt so aus:
Delphi-Quellcode:
Desweiteren: Bei mir kommt dieser Fehler nicht.
uses
Windows, Messages, ShellApi, JwaLm, CommCtrl, SysUtils; Wegen deinem Programm: Danke, nein! Habe ich schon und ich weiß, dass es durchaus bessere Programme gibt, aber vielleicht will der eine oder andere auch ersteinmal einsteigen! Chris :| |
Zitat:
Zitat:
|
Gaaaaaaaaaanz ruhig bleiben, Chakotay.
Jeder hat mal angefangen. Auch der "Großmeister", der sich diesen Titel übrigens ja nicht selbst verliehen hat ... Und du hast dein Programm als NonVCL angekündigt und um Kritik gebeten! Also, nicht aufregen wenn man dich beim Wort nimmt. |
So, Chakotay: 23,5k ist das Ergebnis. Das hier ist von den Units übrig:
Delphi-Quellcode:
Dadurch musst du natürlich auf typische SysUtils-Funktionen verzichten, etwa
uses
Windows, Messages, JwaLm, CommCtrl;
Code:
Für die Zeitanzeige des Logins habe ich mich im Code von Luckie bedient. Frag ihn mal, ob er dir den entsprechenden Part zukommen lässt. (@Luckie: "Int32x32To64" und "SecsToDateTime".) Dafür fiel die "UnixToDateTime" komplett raus, und die entsprechende Anweisung sähe mit Luckies Code dann so aus:
[b]function[/b] IntToStr([b]const[/b] i: integer): [b]string[/b];
[b]begin[/b] Str(i,Result); [b]end[/b]; [b]function[/b] StrLen([b]const[/b] Str: PChar): Cardinal; [b]assembler[/b]; [b]asm[/b] MOV EDX,EDI MOV EDI,EAX MOV ECX,0FFFFFFFFH XOR AL,AL REPNE SCASB MOV EAX,0FFFFFFFEH SUB EAX,ECX MOV EDI,EDX [b]end[/b];
Delphi-Quellcode:
Dann -anfangs!- konnte ich dein Programm nicht mal kompilieren. Der Fehler lag hier:
if aCurUserBuffer.usri11_last_logon = 0 then
TempS := 'Letzer LogIn: (nie)' else TempS := SecsToDateTime(aCurUserBuffer.usri11_last_logon);
Code:
Nachdem ich das rot markierte durch "pointer(aUserBuffer)" ersetzt habe (an anderer Stelle wird das noch mal bemängelt!), ging´s dann. Vielleicht solltest du deinen diesbezüglichen FAQ-Eintrag ausbessern?!
[b]if[/b] NetUserEnum([b]nil[/b], 11, FILTER_NORMAL_ACCOUNT, [color=#ff0000]@aUserBuffer[/color],
MAX_PREFERRED_LENGTH, dwEntriesRead, dwEntriesRead, ... Tja, und zu guter Letzt ein kleiner Bugfix, weil der untere Teil des Treeview nicht zu sehen ist, wenn man ein paar Knoten aufklappt. Also, dies hier steckt im "WM_CREATE":
Delphi-Quellcode:
"r1" und "r2" sind zwei TRect-Variablen. Die holen die Größe des Fensters und des Banners und setzen abhängig davon die korrekte TV-Größe, so dass der horizontale Scrollbalken dann auch komplett zu sehen ist.
{ ... }
GetWindowRect(hwndTitleLab,r1); GetClientRect(hWnd,r2); hWndTV := CreateWindowEx(WS_EX_CLIENTEDGE, 'SysTreeView32', 'Tree View', WS_VISIBLE or WS_CHILD or TVS_HASBUTTONS or TVS_HASLINES or TVS_LINESATROOT, 0, 50, { --> } r2.Right - r2.Left, { --> } (r2.Bottom - r2.Top) - (r1.Bottom - r1.Top), hwnd, IDC_LISTVIEW, hInstance, nil); { ... } So, wenn ich jetzt nichts vergessen habe, dann solltest du dein Programm auch "klein kriegen". :wink: Und dann kann man´s als NonVCL durchgehen lassen. Gruß. PS: Als humorvoller Mensch, dessen Interesse insbesondere den kleinen Doppeldeutigkeiten des Alltags gilt, vergebe ich hiermit den Preis für den Variablennamen des Monats:
Delphi-Quellcode:
:mrgreen:
var
fTitFont: HFONT; |
Zitat:
|
Keine Ahnung. Ich erinnere mich nur daran, dass "Int32x32To64" hier zu finden ist. Bei deiner Zeitgeschichte gab´s damals Probleme, die wir ja via Mail lösen konnten. Wenn du den aktuellen und funktionierenden Stand hier ins Forum geschrieben hast, dann müsste Chak-o-tay eigentlich fündig werden.
|
|
:oops: Ich hielt das Thema für erledigt, deswegen habe ich da gar nicht mehr reingeschaut ... Aber zu diesem Zitat
Zitat:
Zitat:
|
:mrgreen:
Der war gut. |
Liste der Anhänge anzeigen (Anzahl: 1)
So, nachdem ich weitere Erfahrungen gesammelt habe, nun hier meine etwas verbesserte Version. Ich habe aber bisher keine neuen Informationen eingebaut, dass kommt erst später noch...
Kritik erwünscht (dies mal werde ich sie auch vertragen :mrgreen: ). Chris PS: Sorry, für mein Verhalten am Anfang... :| PPS: Jetzt braucht nix mehr irgendwo an anderen Dateien geändert werden. PPPS: Leider ist eine Information verloren gegangen, kommt bald wieder. PPPPS: Jetzt sind's nur noch 45kB EXE. Deutliche Verbesserung, oder? |
Zitat:
PS: Gequetscht bitte nicht mit UPX verwechseln! Die Größe der Datei bezieht sich auf die unkomprimierte Version. Die Änderungen, die ich vornahm, habe ich ja weiter oben beschrieben. |
@ Matthias: ich meine im Gegensatz zum ersten Post. Werde mal sehen, ob ich noch was raushauen kann...
Dazu bräuchte ich Alternativcode für folgende Sachen
Chris |
FindFirst gibts auch mit der WinAPI. Fängt da auch mit FindFirst an.
|
Moin Chris,
Zu dem FindFirstFile usw. müsstest Du hier im Forum Beispiele finden (incl. einbinden). Ich hatte hier, wenn ich mich recht entsinne mal was entsprechendes gepostet. |
Und heißt genau???
Chris |
Hi,
Christian hats also gerade im Moment gepostet. Also, nun noch ein paar Sachen, die übrig bleiben:
Chris |
Moin Chris,
zu FindClose: Such Dir doch mal das Beispiel zu FindFirstFile raus. |
Gerade im Moment gefunden. Fehlt nur noch StrPas und dann bin ich die SysUtils-Unit los... :roll:
Chris |
Moin Chris,
wo brauchst Du denn StrPas? Zitat:
|
Achso... Na dann. Ich dachte man könnte einen PChar nicht in einen String Typecasten... Na gut.
Chris |
Liste der Anhänge anzeigen (Anzahl: 1)
Oiski, Poiski! Jetzt ist die Exe nur noch 20,5kb (unterboten, Matthias!) und das ZIP-Archiv nur noch 17,5kb.
Also, nochmal im Anhang. Allerdings gibt es im Moment ein Problem mit der Funktion "DiskInDrive" aus der Datei PCUtils.pas. Wenn sich dem einer annehmen könnte, wäre ich euch dankbar. Chris |
Liste der Anhänge anzeigen (Anzahl: 1)
Nun ist aber Schluss für heute und damit das letzte Update. Ich habe jetzt die Funktion "DiskInDrive" nach Christians Beitrag im entsprechenden Thread geändert.
So, vielleicht will sich der eine oder andere das mal ansehen und vllt. daraus lernen ;) Chris |
Liste der Anhänge anzeigen (Anzahl: 1)
Auch wenn das Programm niemanden interessiert: ich habe noch ein paar Sachen reingebaut.
Des Weiteren habe ich vor die Einträge noch ein paar Bildchen gesetzt. Die Größe der EXE-Datei beträgt nun 35,5Kb (mit eingeschalteter Bildchen). Wer die Bilder nicht haben will, findet am Anfang des SourceCodes einen Compilerschalter. Wer hat noch Ideen, was ich noch an Infos reinbauen könnte? Chris |
Hi Chris,
hmm, bei mir kommt beim Starten nur eine Fehlermeldung mit: "Die erforderliche DLL-Datei RTL60.BPL wurde nicht gefunden." Grüsse, Daniel :hi: |
Na bitte sieht doch gut aus. Ich habe damals leider nicht so hübsche Bildchen gefunden.
|
Zitat:
wundert mich, da ich eigentlich keine RTLs drin hab... Mach einfach die RTLs wieder raus unter "Components" => "Install Packages". @Luckie: leider verstehe ich nicht, was du meinst. Findest du meine oder deine Bilder nicht so toll? Chris |
Zitat:
|
Zitat:
1. Hab ich kein Delphi. 2. Musst Du doch eine funktionsfähige Version ausliefern! 3. Du musst anders Komplizieren. Dann gibt es auch solche Probleme nicht, aber das musst Du ausbügeln! Grüsse, Daniel :hi: |
Also, wenn ich dich jetzt richtig verstanden habe: du findest meine Bilder ganz nett. Richtig? *puh* Danke!
Habe eigentlich alle nur aus'm I-Net gezogen und dann einfach verkleinert. Chris |
@Daniel: Post gerade erst gelesen. Sorry, passiert nie wieder!
Chris |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz