AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi C++ "..." ins Delphi Übersetzten
Thema durchsuchen
Ansicht
Themen-Optionen

C++ "..." ins Delphi Übersetzten

Ein Thema von nitschchedu · begonnen am 28. Aug 2007 · letzter Beitrag vom 22. Dez 2007
Antwort Antwort
Seite 3 von 4     123 4      
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#21

Re: C++ "..." ins Delphi Übersetzten

  Alt 11. Dez 2007, 20:39
Sind die Dinger mit den Doppelpunkten nicht Bitfelder? Also nicht wirklich zwei ULONGs, sondern je zwei Bit lange vorzeichenlose Integer
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: C++ "..." ins Delphi Übersetzten

  Alt 11. Dez 2007, 20:47
Jupp (abgesehn von dem :2 )

vom inneren Speicheraufbau entspricht es ja genau Folgendem, aber mit dem Doppelrecord liegt es wenigstens nah an Windows seiner Definition, was logisch besser wäre.
Delphi-Quellcode:
Tndu_NDIS_TCP_LARGE_SEND_OFFLOAD_V1 = record
  Encapsulation: ulong;
  MaxOffLoadSize: ulong;
  MinSegmentCount: ulong;
  TcpOptions: ulong; //TcpOptions:2;
  IpOptions: ulong; //IpOptions:2;
end;
wegen dem ...Options, im MSDN steh jedenfalls nur was von "A ULONG value that a miniport driver sets to indicate ...", also für'n Anfang würde ich es wohl auch erstmal so versuchen

[add]
Zitat von OregonGhost:
Sind die Dinger mit den Doppelpunkten nicht Bitfelder? Also nicht wirklich zwei ULONGs, sondern je zwei Bit lange vorzeichenlose Integer
hmmm ... Bitfelder .... ... also BOOL/LongBool?
Code:
[color=silver]TcpOptions: LongBool;
IpOptions: LongBool;[/color]
$2B or not $2B
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#23

Re: C++ "..." ins Delphi Übersetzten

  Alt 11. Dez 2007, 21:02
Naja, mit LongBool kommste nicht hin, weil das original laut Definition aus 2 Bits besteht. Somit haben sie 2^2 mögliche Kombinationen und nicht nur 2^1.

Die Definition besagt, diese Variable belegt nur Bit 0 und 1 und kann somit auch nur Werte zwischen 0 und 3 aufnehmen.
  Mit Zitat antworten Zitat
nitschchedu

Registriert seit: 24. Mär 2006
300 Beiträge
 
Delphi 7 Professional
 
#24

Re: C++ "..." ins Delphi Übersetzten

  Alt 11. Dez 2007, 21:07
Wie sieht denn das nu im Delphi aus und wieso steht dann ulong da wenn dann durch das ":2" was anderes rauskommt ?
Die logig verstehe ich dahinter nicht !
Programmieren ..... .
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#25

Re: C++ "..." ins Delphi Übersetzten

  Alt 11. Dez 2007, 21:26
In C definiert man so eben Bitfelder. Man nimmt einen zugrundeliegenden Typ und teilt ihn in Bits auf. z.B.
Code:
struct {
  unsigned char highnibble: 4;
  unsigned char lownibble: 4;
};
ergibt eine Struktur, die ein Byte in Nibbles einteilt. Ich glaube, solange es alles passt und man den Typ zwischendurch nicht ändert, ergibt der Typ die Gesamtgröße. Du könntest also probieren, deine aufeinanderfolgenden Bitfelder als einen ULONG zu definieren, eigentlich müsste die Größe hinkommen.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#26

Re: C++ "..." ins Delphi Übersetzten

  Alt 11. Dez 2007, 22:15
Beide Bitfelder liegen in einem LONG, somit einem LongWord. Dabei sind TCPOptions Bit 0 & 1 und IPOptions sind Bit 2 & 3.

Ansonsten nochmal kurz hier lesen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: C++ "..." ins Delphi Übersetzten

  Alt 12. Dez 2007, 10:21
mal wieder was Neues gelernt

also wenn die Beiden jetzt im Grunde in dem selben ULONG/LongWord drinliegen, dann sieht es wohl so aus
Delphi-Quellcode:
type
  _NDIS_TCP_LARGE_SEND_OFFLOAD_V1 = record
    IPv4: record
      Encapsulation: LongWord;
      MaxOffLoadSize: LongWord;
      MinSegmentCount: LongWord;
      Tcp_Ip_Options: LongWord;
    end;
  end;
  NDIS_TCP_LARGE_SEND_OFFLOAD_V1 = _NDIS_TCP_LARGE_SEND_OFFLOAD_V1;
  PNDIS_TCP_LARGE_SEND_OFFLOAD_V1 = ^_NDIS_TCP_LARGE_SEND_OFFLOAD_V1;

const
  TcpOptionsMask = $00000003;
  IpOptionsMask = $0000000C;
$2B or not $2B
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#28

Re: C++ "..." ins Delphi Übersetzten

  Alt 12. Dez 2007, 10:56
<stimme vom sesamstrassen-buchstaben-dealer> Genaauuuu </stimme vom sesamstrassen-buchstaben-dealer>
  Mit Zitat antworten Zitat
nitschchedu

Registriert seit: 24. Mär 2006
300 Beiträge
 
Delphi 7 Professional
 
#29

Re: C++ "..." ins Delphi Übersetzten

  Alt 22. Dez 2007, 14:39
So erstmal danke für das bisherige aber es geht weiter ! ^^

Habe nun folgendes gefunden

Code:
//
// Macro definition for defining IOCTL and FSCTL function control codes. Note
// that function codes 0-2047 are reserved for Microsoft Corporation, and
// 2048-4095 are reserved for customers.
//

#define CTL_CODE( DeviceType, Function, Method, Access ) (                 \
    ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) \
)
und das

Code:
#define _NDIS_CONTROL_CODE(request,method) \
            CTL_CODE(FILE_DEVICE_PHYSICAL_NETCARD, request, method, FILE_ANY_ACCESS)

#define IOCTL_NDIS_QUERY_GLOBAL_STATS  _NDIS_CONTROL_CODE(0, METHOD_OUT_DIRECT)

und als weiteres

Code:
#if ((NTDDI_VERSION >= NTDDI_LONGHORN) || NDIS_SUPPORT_NDIS6)
....
#endif // (NTDDI_VERSION >= NTDDI_LONGHORN)
Wie übersetzt ich das ins Delphi ?
Programmieren ..... .
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: C++ "..." ins Delphi Übersetzten

  Alt 22. Dez 2007, 15:07
Code:
// Macro definition for defining IOCTL and FSCTL function control codes. Note
// that function codes 0-2047 are reserved for Microsoft Corporation, and
// 2048-4095 are reserved for customers.

#define CTL_CODE( DeviceType, Function, Method, Access ) (                 \
    ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) \
)
das ist ein Makro ... sowas kennt Delphi nicht.

entweder du machst eine Funktion draus
oder du rechnest es direkt aus.

zu Zweitem:
du könntest (was wohl am Besten sein wird) dieses direkt in der Konstante ausrechnen lassen:
mußt dann nur deine Konstantendefinition nach diesem Muster umsetzen
const {ConstName} = ({DeviceType} shl 16) or ({Access} shl 14) or ({Function} shl 2) or {Method}; ... su kannst es natürlich auch selber ausrechnen und der Konstante den errechneten Wert zuweisen.

Code:
#define xyz

#if xyz
  ...
#endif
Delphi-Quellcode:
{$DEFINE xyz}

{$IFDEF xyz}
  ...
{$ENDIF}
siehe OH
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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:59 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