DELPHI設置枚舉類型size

?

delphi枚舉類型長度默認為2個字節(單字),而在C中枚舉為4個字節(雙字),如果需要跨這兩個平臺編程,傳輸結構時會由于數據長度不一造成災難。

經過查找資料,原來delphi可以通過{$Z+} {$Z-} {$Z1} {$Z4} 等宏設置枚舉類型的長度,小至1個字節,大至4個字節。

官方說明如下:

http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/devcommon/compdirsminimumenumerationsize_xml.html

The $Z directive controls the minimum storage size of Delphi enumerated types.?

An enumerated type is stored as an unsigned byte if the enumeration has no more than 256 values, and if the type was declared in the {$Z1} state (the default). If an enumerated type has more than 256 values, or if the type was declared in the {$Z2} state, it is stored as an unsigned word. Finally, if an enumerated type is declared in the {$Z4} state, it is stored as an unsigned double word.?

The {$Z2} and {$Z4} states are useful for interfacing with C and C++ libraries, which usually represent enumerated types as words or double words.

Note: Note: For backwards compatibility with early versions of Delphi and CodeGear Pascal, the directives {$Z-} and {$Z+} are also supported. They correspond to {$Z1} and {$Z4}, respectively.

例子如下:

http://www.delphibasics.co.uk/RTL.asp?Name=$Z

Example code : Various enum type sizes

type
? {$Z1}
? TCars1? = (Rover, Jaguar, Honda);??? // Will fit into 1 byte
? TFruit1 = (Banana=255, Apple, Pear); // Will exceed one byte
? {$Z4}
? TCars2? = (Ford, Nissan, Vauxhall);? // Now uses 4 bytes
? TFruit2 = (Orange=255, Plum, Grape); // Now uses 4 bytes
begin
? ShowMessage('TCars1? size = '+IntToStr(SizeOf(TCars1)));
? ShowMessage('TFruit1 size = '+IntToStr(SizeOf(TFruit1)));
? ShowMessage('TCars2? size = '+IntToStr(SizeOf(TCars2)));
? ShowMessage('TFruit2 size = '+IntToStr(SizeOf(TFruit2)));
end;

?? TCars1? size = 1
?? TFruit1 size = 2
?? TCars2? size = 4
?? TFruit2 size = 4

轉載于:https://www.cnblogs.com/h2zZhou/p/5000153.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/258029.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/258029.shtml
英文地址,請注明出處:http://en.pswp.cn/news/258029.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Nginx 反向代理 websocket 協議

為什么80%的碼農都做不了架構師?>>> 主要配置內容 server {listen 80;server_name xxx.xxx.xxx;location / {try_files $uri $uri/ /index.html;root /workspace/www;index index.html index.htm;}location ^~/letchat/ {proxy_pass http:/…

oracle中區間大小,Oracle的邏輯結構(表空間、段、區間、塊)——總結

Oracle邏輯結構全景結構圖以下為個人整理的一些關于Oracle邏輯結構的相關數據字典:SELECT * FROMDBA_TABLESPACES--記錄各個表空間的詳細信息SELECT * FROMDBA_TABLESPACE_USAGE_METRICS--記錄各個表空間的使用狀況SELECT * FROMDBA_DATA_FILES --記錄各個數據文件的…

C#3.0之神奇的Lambda表達式和Lambda語句

“Lambda 表達式”是一個匿名函數,它可以包含表達式和語句,并且可用于創建委托或表達式目錄樹類型。所有 Lambda 表達式都使用 Lambda 運算符 >,該運算符讀為“goes to”。該 Lambda 運算符的左邊是輸入參數(如果有&#xff09…

[C++] Nested Radical Constant

做高數助教被天煞的大一學生坑了,發現是個未解問題,沒有解析解。。 用C搞了下,就是這樣。。。 No closed-form expression is known for this constant (Finch 2003, p. 8; S. Plouffe, pers. comm., Aug. 29, 2008). /*********************…

api-gateway實踐(03)新服務網關 - 網關請求攔截檢查

參考鏈接:http://www.cnblogs.com/jivi/archive/2013/03/10/2952829.html 一、為什么要攔截檢查請求? 防止重放攻擊、篡改重放,進行使用規格檢查 1、請求可能是重放攻擊 重放攻擊的基本原理就是把以前竊聽到的數據原封不動地重新發送給接收方…

oracle存儲過程關鍵字有哪些,ORACLESTREAMS存儲過程中的一些參數有哪些?

1,maintain_mode參數可取golbal或transportable tablepsaces,當該參數取global時,表示streams進行全庫復制,否則表示streams進行表空間復制,需要在tablespace_names參數中指定待復制的一個或多個表空間。2,…

正則驗證多個郵箱用分號隔開

代碼如下&#xff1a; <script> var str xxxx126.com;123234234qq.com;xxxxxxxxxx.con.cn; var reg /^((([a-z0-9_\.-])([\da-z\.-])\.([a-z\.]{2,6}\;))*(([a-z0-9_\.-])([\da-z\.-])\.([a-z\.]{2,6})))$/; if(reg.test(str)){ alert(1); }else{ …

轉載-使用 Feed4JUnit 進行數據與代碼分離的 Java 單元測試

JUnit 是被廣泛應用的 Java 單元測試框架&#xff0c;但是它沒有很好的提供參數化測試的支持&#xff0c;很多測試人員不得不把測試數據寫在程序里或者通過其它方法實現數據與代碼的分離&#xff0c;在后續的修改和維護上有諸多限制和不便。Feed4JUnit 是開源的基于 JUnit 的擴…

青島智能院助力智慧城市 打造智能產業“黃埔軍校”

作為青島市的主干道之一&#xff0c;山東路的擁堵狀況一直讓人頭疼。近日&#xff0c;因為一種交通組織優化方案的實施&#xff0c;山東路和延吉路的通行率提高了近50%。而研發這種智能管控系統的正是位于青島高新區的青島智能產業技術研究院。截止今年5月份&#xff0c;青島智…

oracle備份歸檔文件,oracle 如何不備份已經備份的歸檔

在Oracle數據庫備份歸檔日志時&#xff0c;通常會保存最近幾天的歸檔日志文件不刪除。如&#xff1a;backup archivelog all;delete noprompt archivelog all completed before sysdate -14; 在本地保留14天的歸檔日志&#xff0e;再備份時&#xff0c;歸檔會重復再備份一次。…

博客遷移指南

1.今天起 博客遷移至farbox 2. 新博客地址&#xff0c;http://yoon.farbox.com轉載于:https://www.cnblogs.com/yoon/p/5003384.html

iOS 第三方登錄 !

http://www.it165.net/pro/html/201409/21854.html 轉載于:https://www.cnblogs.com/Seeulater/p/4076727.html

dp遞推 hdu1978

How many ways Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5422 Accepted Submission(s): 3185 Problem Description這是一個簡單的生存游戲&#xff0c;你控制一個機器人從一個棋盤的起始點(1,1)走到棋盤的…

codeforce-600C. Make Palindrome(貪心)

http://codeforces.com/problemset/problem/600/C&#xff1b; 題意&#xff1a;給你一個小寫字母組成的英文串&#xff0c;將它轉換為回文串&#xff0c;要求&#xff0c;改變的字母的個數最小&#xff0c;移動字母不算改變字母。 所得的串字典序是最小的。最后輸出所得到的串…

oracle觸發器沒有效果,觸發器不起作用,各位幫忙看看什么原因?

測試數據模型如下&#xff1a;Create Table test_c (Id Number,seq Number,state varchar2(5));select a.*,rowid from test_c aInsert Into test_cValues(1011,101,00A);Insert Into test_cValues(1012,101,00A);Insert Into test_cValues(1021,102,00A);Insert Into test_cVa…

10個我最喜歡問程序員的面試問題

最近我拜讀很多文章&#xff0c;都是介紹面試問題的&#xff0c;我真心不理解&#xff0c;面試官代表公司想要聘用的是最優秀的程序員&#xff0c;那就意味著需要想出一些有意義的面試問題。如果你就提一些毫無用處的垃圾問題&#xff0c;那么很容易遺漏很多能干的程序員。當然…

oracle動態性能視圖和靜態,oracle最重要的9個動態性能視圖

v$session v$session_wait (在10g里功能被整合,湊合算1個吧.)v$processv$sqlv$sqltextv$bh (更寧愿是x$bh)v$lockv$latch_childrenv$sysstatv$system_event按組分的幾組重要的性能視圖1。System 的 over viewv$sysstat , v$system_event , v$parameter2。某個session 的當前情況…

glTF格式初步了解

glTF格式初步了解近期看到Qt 3D的進展。偶然了解到了一種新的格式&#xff1a;glTF格式。這樣的格式據說比現有的3D格式更加符合OpenGL應用的須要。這引起了我的好奇。于是我在Qt 3D的外部鏈接中找到了有關glTF的相關鏈接。上海萌夢信息科技有限公司&#xff08;微博&#xff1…

【】局部刷新:

【】局部刷新&#xff1a; //頁面加載時綁定按鈕點擊事件$(function(){ $("#按鈕id").click(function(){ refresh(); });});//點擊按鈕調用的方法function refresh(){ window.location.reload();//刷新當前頁面. //或者下方刷新方法 //par…

技術貼-搜狗打字

超強技術帖&#xff1a;遇到不會讀的字&#xff0c;怎么用拼音打出來&#xff1f;】方法很簡單&#xff0c;就是先打個“u”然后打各個部首的讀音&#xff0c;就能在拼音輸入法中打出來哦。比如&#xff0c;骉&#xff0c;可以輸入umamama&#xff0c;輸入法就會自動出現“骉”…