AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

unsigned int in delphi ?

Ein Thema von Shadow · begonnen am 30. Mär 2006 · letzter Beitrag vom 31. Mär 2006
Antwort Antwort
Seite 1 von 2  1 2   
Shadow
(Gast)

n/a Beiträge
 
#1

unsigned int in delphi ?

  Alt 30. Mär 2006, 18:58
Hi ho,

ich bastel gerade ne Headerdatei aus c in delphi um. Problem ist
ein datentyp ist im c header ... unsigned int .. welchem Delphityp entspricht das ?

unsigned long scheint cardinal zu sein ... nur bei int ?

mfg Andy
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: unsigned int in delphi ?

  Alt 30. Mär 2006, 19:00
Word ist ein 16-Bit Unsigned Integer.
Michael
  Mit Zitat antworten Zitat
Shadow
(Gast)

n/a Beiträge
 
#3

Re: unsigned int in delphi ?

  Alt 30. Mär 2006, 19:03
oh Danke dir.
  Mit Zitat antworten Zitat
Benutzerbild von Rastaman
Rastaman

Registriert seit: 6. Jan 2005
Ort: Lübbecke
575 Beiträge
 
Turbo C++
 
#4

Re: unsigned int in delphi ?

  Alt 30. Mär 2006, 19:28
UINT, kann man in C auch schreiben.
Chuck Norris has counted to infinity ... twice!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: unsigned int in delphi ?

  Alt 30. Mär 2006, 19:58
unsigned long ist LongWord ... Cardinal hat keine feste Länge ... in Delphi 1 war es noch 16 Bit, da D1 16-Bit-Programme erstellte ... aktuell ist es 32 Bit, da wir ja 32-Bit-Programme erstellen und bald ist es 64 Bit ... steht aber auch in der OH
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Frickeldrecktuxer_TM
(Gast)

n/a Beiträge
 
#6

Re: unsigned int in delphi ?

  Alt 30. Mär 2006, 20:29
ich zitiere mal aus dem C9X-standard:
Zitat von ISO/IEC 9899:1999, WG14:
There are five standard signed integer types, designated as signed char, short
int, int, long int, and long long int. (These and other types may be designated in several additional ways, as described in 6.7.2.) There may also be implementation-defined extended signed integer types. The standard and extended signed integer types are collectively called signed integer types.26)

An object declared as type signed char occupies the same amount of storage as a ‘‘plain’’ char object. A ‘‘plain’’ int object has the natural size suggested by the architecture of the execution environment (large enough to contain any value in the range INT_MIN to INT_MAX as defined in the header <limits.h>).
INT_MIN ist -32767 und INT_MAX ist +32767.
es ist also lediglich sichergestellt daß "int" in C mindestens diesen zahlenbereich speichern kann. gleiches gilt für "unsigned int" wobei gilt: UINT_MAX = 65535. auch hier wird nur festgeschrieben daß der datentyp diese zahl speichern können muss.
eine vollkommen legale übersetzung nach Delphi wären also genauso gut die Delphi-typen "Integer", "Cardinal" oder "Int64". es macht keinerlei unterschied denn alle diese typen können die zahl 65535 eindeutig speichern. das hier vorgeschlagene "Word" ist lediglich der kleinste datentyp der die anforderungen "gerade so" noch erfüllt. der standard schlägt vor daß der datentyp int an die architektur angepasst werden soll.
hier musst du also das handbuch deines compilers dazu befragen wie groß bei ihm "unsigned int" ist. normalerweise wäre es auch einer IA32 32bit. dann wäre eine korrekte übersetzung "LongWord".
und wenn du dich später dazu entschließt einen anderen C-compiler für deinen objektcode (du willst ja anscheinend nur den header übersetzen) zu nehmen wirst du erneut nachschauen müssen wie groß "unsigned int" auf dem neuen compiler ist.
  Mit Zitat antworten Zitat
Shadow
(Gast)

n/a Beiträge
 
#7

Re: unsigned int in delphi ?

  Alt 30. Mär 2006, 20:43
Danke für deine ausführlich Antwort. Klingt logisch. Problem ist nur, dass ich nicht weiß mit welchen compiler oder auf welchem system/Plattform dieser c source code compiliert wird. Geht halt darum das ich eine dll ansprechen will und einige Konstanten und datentypen konvertieren muss.

mfg Andy
  Mit Zitat antworten Zitat
Frickeldrecktuxer_TM
(Gast)

n/a Beiträge
 
#8

Re: unsigned int in delphi ?

  Alt 30. Mär 2006, 20:52
Zitat von Shadow:
Problem ist nur, dass ich nicht weiß mit welchen compiler oder auf welchem system/Plattform dieser c source code compiliert wird. Geht halt darum das ich eine dll ansprechen will und einige Konstanten und datentypen konvertieren muss.
da es eine DLL ist kann man erstmal von Windows ausgehen. das bedeutet daß es wahrscheinlich 16 oder 32 bit sein werden. mehr wäre äußerst unwahrscheinlich.
jetzt müsste dir nur noch einer sagen was sizeof(unsigned int) beim Borland C++ Compiler, beim Microsoft Visual C++ Compiler und beim Intel C++ Compiler ergibt. wenn du glück hast sind die zahlen gleich und du hast eine (einigermaßen) zuverlässige aussage über die größe. wenn es eine DLL ist die aus einem opensource-projekt stammt wäre der GCC aus Ming/W oder Cygwin noch denkbar. bei mir unter Linux haben sowohl der GCC (C) als auch der G++ (C++) für den datentyp "unsigned int" 32 bit. ich nehme stark an daß das unter Windows genauso ist.
  Mit Zitat antworten Zitat
Shadow
(Gast)

n/a Beiträge
 
#9

Re: unsigned int in delphi ?

  Alt 30. Mär 2006, 23:02
es handelt sich bei den header dateien um c dateien aus dem open source code von MySQL. Denke das niemand ersthaft diesen source über cygwin compilieren will Würde dann auch zu den 32bit tendieren da es unter linux wie du meinst ja der fall ist.

mfg Andy
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: unsigned int in delphi ?

  Alt 31. Mär 2006, 10:48
Und da wir aktuell eh vorwiegend mit 32-Bit-Programmen zu tun haben, ist die Annahme, daß es sich um 32-Bit, also um LongWord handelt schon OK.

Ansonsten nimm halt Cardinal und wenn beide Dateien (dein Programm und die DLL) mit 'nem 32-Bitr-Compiler kompiliert werden stimmt es auch wieder.

Und genau um solchen Problemen entgegenzuwirken, arbeite ich möglichst nicht mit Integer/Cardinal/Boolean... (also den systemabhängigen Datentypen)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 19:32 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