AGB  ·  Datenschutz  ·  Impressum  







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

Brauche mal Hilfe von einen C++ Spezi

Ein Thema von ATS3788 · begonnen am 28. Feb 2010 · letzter Beitrag vom 1. Mär 2010
Antwort Antwort
Benutzerbild von ATS3788
ATS3788

Registriert seit: 18. Mär 2004
Ort: Kriftel
646 Beiträge
 
Delphi XE Starter
 
#1

Brauche mal Hilfe von einen C++ Spezi

  Alt 28. Feb 2010, 13:05
Code:
typedef struct
{
   unsigned char    packType;
   unsigned char    trackNumber;
   unsigned char    sequenceNumber;

   unsigned char    characterPosition   :4;
   unsigned char    block         :3;
   unsigned char    bDBC         :1;

   unsigned char    data[12];
   unsigned char    crc0;
   unsigned char    crc1;
}
cdTextPackage;
Kann mir das bitte einer ,von C++, nach
Pascal überstzen und wiviel bytes benutzt werden.

Danke
Martin MIchael
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Brauche mal Hilfe von einen C++ Spezi

  Alt 28. Feb 2010, 13:23
Delphi-Quellcode:
type cdTextPackage = {packed} record
  packType: Byte;
  trackNumber: Byte;
  sequenceNumber: Byte;
  X: Set of (dummy0, bDBC, dummy2, block, characterPosition);
  //X: Set of ({ dummy = 0, } bDBC = 1, block = 3, characterPosition = 4);
  data: Array [0..11] of Byte;
  crc0: Byte;
  crc1: Byte;
end;
[...] = ein statisches Array
:X = ein Bit-Feld (dafür gibt es in Pascal keine wirkliche Entsprechnung)
$2B or not $2B
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.643 Beiträge
 
Delphi 12 Athens
 
#3

Re: Brauche mal Hilfe von einen C++ Spezi

  Alt 28. Feb 2010, 13:25
Zitat von ATS3788:
Code:
typedef struct
{
1   unsigned char    packType;
1   unsigned char    trackNumber;
1   unsigned char    sequenceNumber;

   unsigned char    characterPosition   :4;
   unsigned char    block         :3;
   unsigned char    bDBC         :1;
zusammen 1

   unsigned char    data[12];
12
1   unsigned char    crc0;
1   unsigned char    crc1;
}
cdTextPackage;
Kann mir das bitte einer ,von C++, nach
Pascal überstzen und wiviel bytes benutzt werden.

Danke
Ich bin zwar auch nicht der Experte, aber das müßte wie oben beschrieben sein.
Matthias
  Mit Zitat antworten Zitat
Benutzerbild von ATS3788
ATS3788

Registriert seit: 18. Mär 2004
Ort: Kriftel
646 Beiträge
 
Delphi XE Starter
 
#4

Re: Brauche mal Hilfe von einen C++ Spezi

  Alt 28. Feb 2010, 22:10
Ihr seit toll Danke.
Admin wie schließe ich ein Thema?
Martin MIchael
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#5

Re: Brauche mal Hilfe von einen C++ Spezi

  Alt 1. Mär 2010, 00:35
1. seid (www.seit-seid.de)
2. Themen werden nicht geschlossen
3. Die Übersetzung ist falsch.

Zu 3.: das Set Of ist falsch, da CharacterPosition im Original die untersten 4 Bits sind (Bit 0..3) und in der Übersetzung wurde das Ganze auf ein Bit reduziert. Gleiches gilt für die 3 Bits für block....
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Brauche mal Hilfe von einen C++ Spezi

  Alt 1. Mär 2010, 07:07
Ach menno, hatte mir diese Zahlen als Bit-Positionen gemerkt und nicht als Bit-Anzahl.

Wenn alles nur ein Bit groß wäre, dann ginge das mit dem SET.

Über ein SET ginge das dann nur noch so, aber dieses wäre umständlich zu nutzen.
Delphi-Quellcode:
X: Set of (characterPositionBit0, characterPositionBit1, characterPositionBit2,
           characterPositionBit3, blockBit0, blockBit1, blockBit2, bDBC);
OK, da der TE zum Glück mindestens ein D20006/TDE besitzt, kommt hier die ultimative Lösung:
Delphi-Quellcode:
type
  cdTextPackage = record
              packType: Byte;
              trackNumber: Byte;
              sequenceNumber: Byte;
  private
              _block: Byte;
    function GetCharPos: Byte;
    procedure SetCharPos (B: Byte);
    function GetBlock: Byte;
    procedure SetBlock (B: Byte);
    function GetDBC: Byte;
    procedure SetDBC (B: Byte);
  public
    property characterPosition: Byte read GetCharPos write SetCharPos;
    property block: Byte read GetBlock write SetBlock;
    property bDBC: Byte read GetDBC write SetDBC;
  public
              data: Array[0..11] of Byte;
              crc0: Byte;
              crc1: Byte;
  end;


function cdTextPackage.GetCharPos: Byte;
begin
  Result := _block and $0F;
end;

procedure cdTextPackage.SetCharPos(B: Byte);
begin
  _block := _block and $F0 or B and $0F;
end;

function cdTextPackage.GetBlock: Byte;
begin
  Result := (_block shr 4) and $07;
end;

procedure cdTextPackage.SetBlock(B: Byte);
begin
  _block := _block and $8F or (B shl 4) and $70;
end;

function cdTextPackage.GetDBC: Byte;
begin
  Result := (_block shr 7) and $01;
end;

procedure cdTextPackage.SetDBC(B: Byte);
begin
  _block := _block and $7F or (B shl 7) and $80;
end;
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Brauche mal Hilfe von einen C++ Spezi

  Alt 1. Mär 2010, 10:25
Kuckstu hier.
Uli Gerhardt
  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 05:01 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