AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Large Integer? Welcher Typ in Delphi
Thema durchsuchen
Ansicht
Themen-Optionen

Large Integer? Welcher Typ in Delphi

Offene Frage von "richard_boderich"
Ein Thema von richard_boderich · begonnen am 5. Dez 2007 · letzter Beitrag vom 7. Dez 2007
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#21

Re: Large Integer? Welcher Typ in Delphi

  Alt 7. Dez 2007, 17:54
in Delphi gibt es den Record auch ... der heißt übrigens ganz einfach LARGE_INTEGER / _LARGE_INTEGER

Delphi-Quellcode:
type // aus Unit Windows
  PLargeInteger = ^TLargeInteger;
  _LARGE_INTEGER = record
    case Integer of
    0: (
      LowPart: DWORD;
      HighPart: Longint);
    1: (
      QuadPart: LONGLONG);
  end;
  TLargeInteger = Int64;
  LARGE_INTEGER = _LARGE_INTEGER;

  ULARGE_INTEGER = record
    case Integer of
    0: (
      LowPart: DWORD;
      HighPart: DWORD);
    1: (
      QuadPart: LONGLONG);
  end;
  PULargeInteger = ^TULargeInteger;
  TULargeInteger = ULARGE_INTEGER;
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#22

Re: Large Integer? Welcher Typ in Delphi

  Alt 7. Dez 2007, 18:01
@Himitsu
is jetz nich dein Ernst oder?
Hast du dir die demo mal angeschaut? Wenn ich einen Int64 nehme liefert mir die Funktion nur noch Schwachsinn zurück.
Ich bezweifle, das es mit einer so großen Recordstruktur anders sein wird. Aber ich teste das mal. Entweder ich hab
nen kapitale Bug drinn oder die MSDN ist dort falsch dokumentiert.

mfG Richard
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#23

Re: Large Integer? Welcher Typ in Delphi

  Alt 7. Dez 2007, 18:11
ohh, da gibt's 'ne Demo (war nicht im Themen-Rückblick zu sehn -.-'')

ich schau mal rein
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#24

Re: Large Integer? Welcher Typ in Delphi

  Alt 7. Dez 2007, 18:16
@Himitsu
wenn ich Large_Integer nehme kracht es ->Kernel32.dll exeption
Wenn ich Plargeinteger nehm. funktioniert es, jedoch ist in der Strucktur kein Pointer ausgeschrieben.

Ich habe festgestellt, das wenn ich für den Parameter Time von TKBasicInformation einen Int64 nehm füllt windows anscheinend sie Struktur nicht mehr richtig. Tlasttimewrite sollte eigentlich auch 2 Dword beinhalten statt 2 word. jedoch kracht es dann wieder.
Entweder ich lese die Struktur falsch aus, oder es liegt am Typ des Feldes Time? Die Länge und der String werden ja richtig ausgelesen , das habe ich überprüft.

Richard
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#25

Re: Large Integer? Welcher Typ in Delphi

  Alt 7. Dez 2007, 18:40
also dann ist es wohl ein Fehler im MSDN?

weil LARGE / LONGLONG = 64 Bit

Plargeinteger = Pointer/Integer also wieder 32 Bit ... wird die API wohl doch nur 32 Bit haben wollen

und dieses _KEY_BASIC_INFORMATION hätte ich so Übersetzt
Delphi-Quellcode:
TKeyBasicInformation = packed record
  Time: TFileTime;
  TitleIndex: LongWord;
  NameLength: LongWord;
  Name: Array[0..0] of WideChar;
end;
stimmt sozusagen mit deinem überein.



mit KEY_INFORMATION_CLASS mußt du erstmal aufpassen ... entweder du sorgst dafür daß dieses Set 4 Byte groß ist (standardmäßig macht Delphi dieses nur 1 Byte klein)

oder du definierst es so:
Delphi-Quellcode:
type
  KEY_INFORMATION_CLASS = ULONG;

const
  KeyBasicInformation = 0;
  KeyCachedInformation = 1;
  KeyNameInformation = 2;
  KeyNodeInformation = 3;
  KeyFullInformation = 4;
  KeyVirtualizationInformation = 5;
ich mach's gern auch so ... da sieht man den Zusammenhang
Delphi-Quellcode:
type KEY_INFORMATION_CLASS = ULONG;
const KeyBasicInformation = KEY_INFORMATION_CLASS(0);
      ...
      KeyVirtualizationInformation = KEY_INFORMATION_CLASS(5);
PS: const KeyBasicInformation: KEY_INFORMATION_CLASS = 0; geht nicht, weil Delphi macht dann eine "konstante" Variable draus -.-''


[add]
hast du nochmal die Parameter deiner APIs geprüft?

VAR, CONST und sowas kennt die WinAPI (C) ja sozusagen nicht

NtQueryKey:
var ResultLength: PULONG würde ich da eher als var ResultLength: ULONG vermuten (kenn jetzt aber die API-Definitionen nicht, aber es wird doch wohl PULONG ResultLength; sein).
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#26

Re: Large Integer? Welcher Typ in Delphi

  Alt 7. Dez 2007, 19:12
@Himitsu

hast du es mal mit deinem Record getestet?

KeyInformationClass ist doch als Aufzählung definiert, oder was meinst du?

Richard
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  Mit Zitat antworten Zitat
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#27

Re: Large Integer? Welcher Typ in Delphi

  Alt 7. Dez 2007, 19:23
@Himitsu

Habe es jetz mit deinen Änderungen getestet. Es kracht...

Die Konstanten der Klasse Key_Information_Class habe ich als Const definiert wie von dir vorgeschlagen. Leider hat das
überhaupt keinen Einfluss. Sobald ich Time als Tfiletime definiere. -> Exeption

Gruß Richard
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#28

Re: Large Integer? Welcher Typ in Delphi

  Alt 7. Dez 2007, 20:11
Zitat von richard_boderich:
hast du es mal mit deinem Record getestet?

KeyInformationClass ist doch als Aufzählung definiert, oder was meinst du?
nein hab ich nicht, aber es war bisher bei allen anderen Aufzählungen so, welche ich übersetzt hab.

Heißt Delphi würde bei deinem Code nur das niederwertige Byte setzen und Windows den ganzen integer auswerten, wenn du es einfach nur als SET definierst.

Und wenn dein SET strimmt, dann stimmen auch die Werte der Konstanten ... es wird einfach nur durchgezählt.

so, ich lad mir gleich nochmal deine Demo runter ... entweder hab ich grad was zertestet, oder die Variable Test wird nirgend's zugewiesen, weßhalb da nur schrott drinsteht
[add]nee stimmt, TEST wird nirgends was zugewiesen, also Inhalt ist undefiniert[/add]



kannst du mal die ganzen Definitionen posten?
also das woraus du die Funktionsdefinitionen erstellt hast.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#29

Re: Large Integer? Welcher Typ in Delphi

  Alt 7. Dez 2007, 20:38
ein bisl PLONG>varLONG geändert

und wenn du von NtQueryKey in KeyInformation 1024 Byte speichern lassen willst,
dann weise KeyInformation erstmal Speicher zu
Angehängte Dateien
Dateityp: zip demo_182.zip (197,2 KB, 21x aufgerufen)
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 15:53 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