Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   SysInfo (https://www.delphipraxis.net/2508-sysinfo.html)

CalganX 26. Jan 2003 20:31


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ä*

Luckie 26. Jan 2003 20:46

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:
uses
  SysUtils, Windows,
  Messages, ShellApi,
  Dialogs, JwaLm,
  CommCtrl, System,
  Classes, Graphics;
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.

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.

CalganX 26. Jan 2003 21:07

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:
uses
  Windows, Messages,
  ShellApi, JwaLm,
  CommCtrl, SysUtils;
Desweiteren: Bei mir kommt dieser Fehler nicht.
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 :|

Luckie 26. Jan 2003 21:14

Zitat:

Zitat von Chakotay1308
Hi Luckie,
Entschuldigung, dass mein erstes nonVCL-Programm dem Großmeister der nonVCL nicht gerecht ist! :x :evil:

Das war nicht böse gemeint, sondern nur ein gut gemeinter Hinweis.

Zitat:

Desweiteren: Bei mir kommt dieser Fehler nicht.
Könnte auch das Diskettenlaufwerk gewesen sein.

MathiasSimmack 27. Jan 2003 08:17

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.

MathiasSimmack 27. Jan 2003 11:17

So, Chakotay: 23,5k ist das Ergebnis. Das hier ist von den Units übrig:
Delphi-Quellcode:
uses
  Windows, Messages, JwaLm, CommCtrl;
Dadurch musst du natürlich auf typische SysUtils-Funktionen verzichten, etwa
Code:
[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];
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:
Delphi-Quellcode:
if aCurUserBuffer.usri11_last_logon = 0 then
  TempS := 'Letzer LogIn: (nie)'
else
  TempS := SecsToDateTime(aCurUserBuffer.usri11_last_logon);
Dann -anfangs!- konnte ich dein Programm nicht mal kompilieren. Der Fehler lag hier:
Code:
[b]if[/b] NetUserEnum([b]nil[/b], 11, FILTER_NORMAL_ACCOUNT, [color=#ff0000]@aUserBuffer[/color],
  MAX_PREFERRED_LENGTH, dwEntriesRead, dwEntriesRead, ...
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?!

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:
{ ... }

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);

  { ... }
"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.


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:
var
  fTitFont: HFONT;
:mrgreen:

Luckie 27. Jan 2003 12:38

Zitat:

Zitat von MathiasSimmack
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

Wenn ich mich nicht irre, habe ich ihn doch schon gepostet oder etwa doch nicht?

MathiasSimmack 27. Jan 2003 13:29

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.

Luckie 27. Jan 2003 13:36

Hier ist es, vorletzte Posting:
http://www.delphipraxis.net/viewtopic.php?t=2626

MathiasSimmack 27. Jan 2003 18:54

:oops: Ich hielt das Thema für erledigt, deswegen habe ich da gar nicht mehr reingeschaut ... Aber zu diesem Zitat
Zitat:

Zitat von Luckie
Mathias als lebender Debugger

(man beachte den fett markierten Teil :wink:) fällt mir doch glatt was aus FUTURAMA ein:
Zitat:

Zitat von Space and Time 3000
You really want a robot for a friend? ... Okay, but I don't want people thinking we're robosexuals. So if anyone asks, you're my debugger.



Alle Zeitangaben in WEZ +1. Es ist jetzt 09:52 Uhr.
Seite 1 von 4  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz