AGB  ·  Datenschutz  ·  Impressum  







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

XE2 Bios Daten auslesen

Ein Thema von bernhard_LA · begonnen am 8. Sep 2011 · letzter Beitrag vom 14. Dez 2011
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.123 Beiträge
 
Delphi 11 Alexandria
 
#1

XE2 Bios Daten auslesen

  Alt 8. Sep 2011, 13:25
Anbei ein Code Fragment zum Auslesen der Biosdaten, unter D7 alles prima, nur Delphi XE2 mault jetzt

a) N : DWORD scheint falsch zu sein
b) array of Char nach Array of AnsiChar war nicht hilfreich



procedure BiosDaten(var Name, Copyright, Datum, SN : string);
var
Buffer : Array[0..8] Of Char;
N : DWORD; ------->>>> [DCC Fehler] E2033 Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen
begin

ReadProcessMemory( GetCurrentProcess,Ptr( $FE061),@Buffer,8,N);
Buffer[8]:=#0; ----->>>>> [DCC Fehler]Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen
Name:=StrPas(Buffer);

........

end;
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: XE2 Bios Daten auslesen

  Alt 8. Sep 2011, 13:36
Jetzt ist die Frage: Welches ReadProcessMemory wird denn da verwendet? Schau Dir mal die Deklaration an.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.008 Beiträge
 
Delphi 12 Athens
 
#3

AW: XE2 Bios Daten auslesen

  Alt 8. Sep 2011, 13:41
Mach aus dem N ein NativeUInt.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: XE2 Bios Daten auslesen

  Alt 8. Sep 2011, 14:06
Und m.E.n muss es dann
ReadProcessMemory( GetCurrentProcess,Ptr( $FE061),@Buffer,8 * SizeOf(Char),N); heißen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: XE2 Bios Daten auslesen

  Alt 8. Sep 2011, 14:08
Und m.E.n muss es dann
ReadProcessMemory( GetCurrentProcess,Ptr( $FE061),@Buffer,8 * SizeOf(Char),N); heißen.
Davon abgesehen, dass
Buffer : Array[0..8] Of Char;
9 Chars sind und nicht 8.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.008 Beiträge
 
Delphi 12 Athens
 
#6

AW: XE2 Bios Daten auslesen

  Alt 8. Sep 2011, 14:11
Und m.E.n muss es dann
ReadProcessMemory( GetCurrentProcess,Ptr( $FE061),@Buffer,8 * SizeOf(Char),N); heißen.
Das hängt allerdings davon ab, ob die Daten im BIOS als Ansi- oder WideString abgelegt sind. Ich bin davon ausgegangen, daß die Änderung des Arrays auf AnsiChar sowieso schon erfolgt ist.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.008 Beiträge
 
Delphi 12 Athens
 
#7

AW: XE2 Bios Daten auslesen

  Alt 8. Sep 2011, 14:11
Und m.E.n muss es dann
ReadProcessMemory( GetCurrentProcess,Ptr( $FE061),@Buffer,8 * SizeOf(Char),N); heißen.
Davon abgesehen, dass
Buffer : Array[0..8] Of Char;
9 Chars sind und nicht 8.
In Buffer[8] steht am Ende ja auch #0!
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

AW: XE2 Bios Daten auslesen

  Alt 8. Sep 2011, 14:15
Naja, nicht wenn er nur 8 Chars liest... Sonst steht in Buffer[8] ein zufälliger Stack-Inhalt.
Quatsch! Jetzt weiß ich was du meinst

PS: Sind die BIOS-Infos wirklich WideStrings? Ich schätze mal man muss da AnsiChars nehmen.
(Es sei denn ich irre mich)
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."

Geändert von Neutral General ( 8. Sep 2011 um 14:17 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.008 Beiträge
 
Delphi 12 Athens
 
#9

AW: XE2 Bios Daten auslesen

  Alt 8. Sep 2011, 14:21
Naja, nicht wenn er nur 8 Chars liest... Sonst steht in Buffer[8] ein zufälliger Stack-Inhalt.
Quatsch! Jetzt weiß ich was du meinst

PS: Sind die BIOS-Infos wirklich WideStrings? Ich schätze mal man muss da AnsiChars nehmen.
(Es sei denn ich irre mich)
Das werden wohl AnsiStrings sein, sonst hätte es in D7 nicht mit array of char funktioniert.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: XE2 Bios Daten auslesen

  Alt 8. Sep 2011, 14:27
Ich hätte ja gedacht, dass es dann so gehen müsste:
Delphi-Quellcode:
procedure BiosDaten(var Name, Copyright, Datum, SN: AnsiString);
const
  BUFDATASIZE = 8;
var
  Buffer: Array[0..BUFDATASIZE] Of AnsiChar;
  N: DWORD {bzw. NativeUInt};
begin
  ReadProcessMemory(GetCurrentProcess, Ptr($FE061), @Buffer, BUFDATASIZE, N);
  Buffer[BUFDATASIZE] := #0;
  Name := AnsiString(Buffer);
  //...
end;
Allerdings bekomme ich da auch kein gescheites Ergebnis (XE auf Vista 32).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  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 14:15 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