Lazarus中文社区

 找回密码
 立即注册(注册审核可向QQ群索取)

QQ登录

只需一步,快速开始

Lazarus IDE and 组件 下载地址版权申明
查看: 2729|回复: 4

基本問題求教:如何讓某型態的資料有預設初值?

[复制链接]

该用户从未签到

发表于 2012-7-29 01:22:52 | 显示全部楼层 |阅读模式
各位前輩好,

小弟最近遇到一個有點困擾的問題,那就是Object Pascal (Delphi或FreePascal皆是) 並沒有像是Java等語言一樣會自動給資料型態一個預設初值(例如Double預設為0),導致當副程式很多,變數也很多(尤其又是陣列型態)時,必須要一個個在區域變數的宣告var區段給初值;有時候萬一遇到Array[1..300] of Double那種大陣列,宣告成a,b,c,d,e.....z:Array[1..300] of Double = (0,0,0,0,0.......三百個0); 好像還蠻蠢的,而Array[1..300] of Double的變數可能也有好幾十個,一個一個去用zeromemory去處理也頗麻煩;有沒有方法可以直接從前端 "資料型態" 的部份直接讓某些資料型態有預設初值而不用一一宣告?希望有經驗的前輩們可以指點一下,謝謝!

chenyuchih
回复

使用道具 举报

该用户从未签到

发表于 2012-8-1 12:40:49 | 显示全部楼层
这个是不是要改pascal?
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2012-8-1 12:44:50 | 显示全部楼层
个人观点:如果数组初值相同,用For循环会方便些
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2012-8-1 22:26:25 | 显示全部楼层
感謝樓上的回覆,在函式一開始就把所有的變數全部強制初始化的作法也想過,但是當變數數量一多時,程式碼會變得又臭又長,例如說滿滿幾大頁都是在做「數值變數:=0;」或是「字串變數:='';」這種跟程式演算流程主體無關的程式碼,實在是有點讓人看了不舒服.....所以才想說能不能找到更精簡的作法,讓程式看起來清爽些。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2012-8-31 20:36:47 | 显示全部楼层
简单类型的默认值都是 0, 有自动内存管理的隐式指针类型 (如字串, 接口, 动态数组之类) 也是 0-初始化的。

我想你想问的是如何初始化大数组。

◦  动态数组变量会自动被 SetLength() 0-初始化;
◦  在 VAR 段里声明的静态数组, 可以用 FillChar() 将其填充成 0;
◦  在 CONST 段里声明的静态数组, 只能手动定义初始值。
回复 支持 反对

使用道具 举报

*滑块验证:

本版积分规则

QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1 )

GMT+8, 2024-3-19 14:34 , Processed in 0.034000 second(s), 9 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表