Delphi-PRAXiS

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.


Luckie 27. Jan 2003 20:07

:mrgreen:

Der war gut.

CalganX 7. Feb 2003 18:38

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?

MathiasSimmack 7. Feb 2003 19:03

Zitat:

Zitat von Chakotay1308
PPPPS: Jetzt sind's nur noch 45kB EXE. Deutliche Verbesserung, oder?

Hm, im Vergleich womit? Wenn ich so überlege, dass ich deinen Code in eine Exe von nur 23,5k gequetscht habe, dann wohl nicht ... :)

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.

CalganX 7. Feb 2003 19:08

@ 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
  • TSearchRec
  • StrPas
  • FindFirst
  • faAnyFile
  • IntToStr => Ist bereits oben

Chris

Chewie 7. Feb 2003 19:12

FindFirst gibts auch mit der WinAPI. Fängt da auch mit FindFirst an.

Christian Seehase 7. Feb 2003 19:15

Moin Chris,
  1. WIN32_FIND_DATA
  2. weiss nicht
  3. FindFirstFile
  4. FILE_ATTRIBUTE_NORMAL
  5. weiss nicht

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.

CalganX 7. Feb 2003 19:15

Und heißt genau???

Chris

CalganX 7. Feb 2003 19:19

Hi,
Christian hats also gerade im Moment gepostet. Also, nun noch ein paar Sachen, die übrig bleiben:
  • StrPas
  • FindClose

Chris

Christian Seehase 7. Feb 2003 19:22

Moin Chris,

zu FindClose:
Such Dir doch mal das Beispiel zu FindFirstFile raus.

CalganX 7. Feb 2003 19:22

Gerade im Moment gefunden. Fehlt nur noch StrPas und dann bin ich die SysUtils-Unit los... :roll:

Chris

Christian Seehase 7. Feb 2003 19:26

Moin Chris,

wo brauchst Du denn StrPas?

Zitat:

Zitat von Delphi Hilfe zu StrPas
StrPas ist nur aus Gründen der Abwärtskompatibilität vorhanden. Um einen nullterminierten String in einen Pascal-String zu konvertieren, verwenden Sie eine Typumwandlung oder eine Zuweisung.


CalganX 7. Feb 2003 19:40

Achso... Na dann. Ich dachte man könnte einen PChar nicht in einen String Typecasten... Na gut.

Chris

CalganX 7. Feb 2003 19:51

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

CalganX 7. Feb 2003 20:00

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

CalganX 9. Feb 2003 18:12

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

Daniel B 9. Feb 2003 18:16

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:

Luckie 9. Feb 2003 18:18

Na bitte sieht doch gut aus. Ich habe damals leider nicht so hübsche Bildchen gefunden.

CalganX 9. Feb 2003 18:32

Zitat:

Zitat von Daniel B
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:

Hi Daniel,
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

Luckie 9. Feb 2003 18:38

Zitat:

Zitat von Chakotay1308
@Luckie: leider verstehe ich nicht, was du meinst. Findest du meine oder deine Bilder nicht so toll?

Meine finde ich nicht so toll.

Daniel B 9. Feb 2003 18:39

Zitat:

Zitat von Chakotay1308
wundert mich, da ich eigentlich keine RTLs drin hab...
Mach einfach die RTLs wieder raus unter "Components" => "Install Packages".

Bitte? Ist das jetzt Dein ernst?
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:

CalganX 9. Feb 2003 18:40

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

CalganX 9. Feb 2003 18:43

@Daniel: Post gerade erst gelesen. Sorry, passiert nie wieder!

Chris


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:24 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