AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SysInfo

Ein Thema von CalganX · begonnen am 26. Jan 2003 · letzter Beitrag vom 9. Feb 2003
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
CalganX
Registriert seit: 21. Jul 2002
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ä*
Angehängte Dateien
Dateityp: zip OSInfo_380.zip (196,8 KB, 95x aufgerufen)
 
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#2
  Alt 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.
Michael
  Mit Zitat antworten Zitat
CalganX

 
Turbo Delphi für Win32
 
#3
  Alt 26. Jan 2003, 21:07
Hi Luckie,
Entschuldigung, dass mein erstes nonVCL-Programm dem Großmeister der nonVCL nicht gerecht ist!
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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#4
  Alt 26. Jan 2003, 21:14
Zitat von Chakotay1308:
Hi Luckie,
Entschuldigung, dass mein erstes nonVCL-Programm dem Großmeister der nonVCL nicht gerecht ist!
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.
Michael
  Mit Zitat antworten Zitat
MathiasSimmack
 
#5
  Alt 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.
  Mit Zitat antworten Zitat
MathiasSimmack
 
#6
  Alt 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".
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;
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#7
  Alt 27. Jan 2003, 12:38
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?
Michael
  Mit Zitat antworten Zitat
MathiasSimmack
 
#8
  Alt 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.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#9
  Alt 27. Jan 2003, 13:36
Hier ist es, vorletzte Posting:
http://www.delphipraxis.net/viewtopic.php?t=2626
Michael
  Mit Zitat antworten Zitat
MathiasSimmack
 
#10
  Alt 27. Jan 2003, 18:54
Ich hielt das Thema für erledigt, deswegen habe ich da gar nicht mehr reingeschaut ... Aber zu diesem Zitat
Zitat von Luckie:
Mathias als lebender Debugger
(man beachte den fett markierten Teil ) fällt mir doch glatt was aus FUTURAMA ein:
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:11 Uhr.
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