AGB  ·  Datenschutz  ·  Impressum  







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

[C->Delphi] struct { ULONG a:2; }

Ein Thema von Win32.API · begonnen am 11. Okt 2008 · letzter Beitrag vom 12. Okt 2008
Antwort Antwort
Win32.API

Registriert seit: 23. Mai 2005
312 Beiträge
 
#1

[C->Delphi] struct { ULONG a:2; }

  Alt 11. Okt 2008, 21:09
Hallo,

ist es möglich, soetwas

Code:
struct {
ULONG a:2;
ULONG b:1;
ULONG c:6;
ULONG d:2;
}test;
In Delphi zu deklarieren?

Gruß,
Win32.API
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: [C->Delphi] struct { ULONG a:2; }

  Alt 11. Okt 2008, 21:21
ja. eine Struct ist ein record und ein ULONG wird ein unsigned Long sein also ein Cardinal
Edit: ups, ich seh grad das es sich um ein Bitfeld handelt - ich hatte die Doppelpunkte übersehen. Soweit mir bekannt ist das in Delphi nicht möglich. Das bleibt den Systemnahen Programmiersprachen zumeist vorbehalten.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
SirTwist

Registriert seit: 28. Sep 2006
196 Beiträge
 
Delphi XE Professional
 
#3

Re: [C->Delphi] struct { ULONG a:2; }

  Alt 11. Okt 2008, 22:20
Ich weiß nicht, was Delphi daraus machen würde, abe ich meine mich an meinen lang zurückliegenden Info-LK erinnern zu können, da gab es sowas wie "packed array of Boolean". Gibts das noch? Wenn ja, könnte das das gewüsnchte sein.

Gruß,
SirTwist
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: [C->Delphi] struct { ULONG a:2; }

  Alt 11. Okt 2008, 22:43
Zitat von SirTwist:
da gab es sowas wie "packed array of Boolean". Gibts das noch?
Boolean ist ein Byte (auch wenn es einen Bitwert darstellen soll)

Am Nähesten kommt dann wohl (da hier mehrere Bist in einem Feld vorkommen) eine Variante mit Masken (den Konstanten im Beispiel).
Delphi-Quellcode:
type TTest = Cardinal;

const aMask = $0003; // b0000000000000011
      bMask = $0004; // b0000000000000100
      cMask = $01F8; // b0000000111111000
      dMask = $0600; // b0000011000000000

var x: TTest;
      a, b, c, d: Cardinal;

a := x and aMask;
b := (x and bMask) shr 2;
c := (x and cMask) shr 3;
d := (x and dMask) shr 9;
Wenn alle Felder je nur ein Bit groß gewesen wären, dann hätte man auch ein SET (Bitfeld) nehmen können
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: [C->Delphi] struct { ULONG a:2; }

  Alt 12. Okt 2008, 07:43
NB:
Mit einem "Packed Record" ging das in Pascal früher:
Delphi-Quellcode:
test = packed Record
  a : 0..3;
  b : 0..1;
  c : 0..64;
  d : 0..3;
  end;
Wie gesagt: Früher.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort


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 21:54 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