Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: Toolbar-Auslesen klappt nicht auf einem 64bit-Win7?

  Alt 23. Okt 2012, 13:55
Tja, als erstes hast du mal einen großen Fehler in deinem Record. (zumindestens da im Post #1)
Oder hast du das cbSize absichtlich weggelassen?


Code:
// blöde Formatierung der [delphi]-Tags ... wird das denn irgendwann mal repariert? (ich mag meine Leerzeichen nämlich)

uses
  RTTI;

type
  {$ALIGN 8}
  TBBUTTONINFO64 = record
    cbSize:    UINT;
    ewMask:    DWORD;
    idCommand: {int}LongInt;
    iImage:    {int}LongInt;
    fsState:   BYTE;
    fsStyle:   BYTE;
    cx:        WORD;
    lParam:    DWORD_PTR;
    pszText:   LPTSTR;
    cchText:   {int}LongInt;
  end;

procedure TForm11.Button1Click(Sender: TObject);
var
  R: TRttiRecordType;
  F: TRttiField;
begin
  R := TRttiContext.Create.GetType(TypeInfo(TBBUTTONINFO64)) as TRttiRecordType;
  Memo1.Lines.Add(
    '   Offset: ' +
    '   Size: ' + IntToStr(R.TypeSize) +
    '   Type: ' + R.Name);
  for F in R.GetFields do
    Memo1.Lines.Add(
      '   Offset: ' + IntToStr(F.Offset) +
      '   Size: ' + IntToStr(F.FieldType.TypeSize) +
      '   Type: ' + F.FieldType.QualifiedName +
      '   Name: ' + F.Name);
end;
Unter 32 Bit sieht es wie folgt aus.
Code:
    Offset: 0    Size: 32    Type: TBBUTTONINFO64
    Offset: 0    Size: 4    Type: System.Cardinal   Name: cbSize
    Offset: 4    Size: 4    Type: System.Cardinal   Name: ewMask
    Offset: 8    Size: 4    Type: System.Integer   Name: idCommand
    Offset: 12    Size: 4    Type: System.Integer   Name: iImage
    Offset: 16    Size: 1    Type: System.Byte   Name: fsState
    Offset: 17    Size: 1    Type: System.Byte   Name: fsStyle
    Offset: 18    Size: 2    Type: System.Word   Name: cx
    Offset: 20    Size: 4    Type: System.Cardinal   Name: lParam
    Offset: 24    Size: 4    Type: System.PWideChar   Name: pszText
    Offset: 28    Size: 4    Type: System.Integer   Name: cchText
Mit 64 Bit kann ich's grade nicht testen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (23. Okt 2012 um 15:07 Uhr)
  Mit Zitat antworten Zitat