社区
语言基础/算法/系统设计
帖子详情
SetLength有极限
iamduo
2009-11-04 04:33:49
我在进行大数据量计算的时候,
用到动态(Record)数组 + 链表的方式进行。
出现错误。
单步跟踪后,发现问题出现
SetLength(xxx,iLen+1)这句上。
差help后才知道,xxx其实应该是255条,虽然超过部分数据还在。但是超过后可能就不管了。
请问,各位高手,是怎么解决这类话题的?
...全文
118
12
打赏
收藏
SetLength有极限
我在进行大数据量计算的时候, 用到动态(Record)数组 + 链表的方式进行。 出现错误。 单步跟踪后,发现问题出现 SetLength(xxx,iLen+1)这句上。 差help后才知道,xxx其实应该是255条,虽然超过部分数据还在。但是超过后可能就不管了。 请问,各位高手,是怎么解决这类话题的?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
iamduo
2009-11-05
打赏
举报
回复
[Quote=引用 8 楼 iamduo 的回复:]
我想,我的问题焦点在
PNode=^TNode;
TNode=record
Name:String[24];
Sex:Boolean;
Age:Integer;
end;
PChain=^TChain;
TChain=record
FirstNode:PNode;//☆
LastNode:PNode;//☆
NextChain:PChain;
end;
var Temp:array of TNode;
Header:PChain;
以上结构。
我先取出一个Temp序列
然后希望,将Temp变成链表结构,然后再进行分析。
在添加的时候,可以这么写吗?
var chain:PChain;
New(chain);
chain:=@Temp[a];//?????
Header.NextChain:=chain;
......
[/Quote]
也许这个问题改去问 一杯龙
简单的问,就是,
1、怎么赋值地址?
2、☆ 的地方,如果用Pointer的话,怎么取出TNode记录?
送分贴,送分贴了。
阿三
2009-11-05
打赏
举报
回复
没怎么看明白楼主的意思
wsxcdx
2009-11-05
打赏
举报
回复
不懂,学习
iamduo
2009-11-05
打赏
举报
回复
我想,我的问题焦点在
PNode=^TNode;
TNode=record
Name:String[24];
Sex:Boolean;
Age:Integer;
end;
PChain=^TChain;
TChain=record
FirstNode:PNode;
LastNode:PNode;
NextChain:PChain;
end;
var Temp:array of TNode;
Header:PChain;
以上结构。
我先取出一个Temp序列
然后希望,将Temp变成链表结构,然后再进行分析。
在添加的时候,可以这么写吗?
var chain:PChain;
New(chain);
chain:=@Temp[a];//?????
Header.NextChain:=chain;
......
iamduo
2009-11-05
打赏
举报
回复
原因已经找到。
如:FirstNode:PNode;//☆
这个FirstNode只能赋值TNode的地址,不能直接修改
比如:Header.FirstNode.Name:='新名字';
这样的做法会引发地质混乱。
准确的做法是:
var
node:TNode;
begin
node:=Header.FirstNode^;//找回地址所指的TNode
node.Name:='新名字';
end;
有在搞链表的请注意了。
husion01
2009-11-04
打赏
举报
回复
不知道你的问题是什么问题!~
preserve
2009-11-04
打赏
举报
回复
255的确跟动态数组没有什么关系
还是没看懂你要说的是啥
Seamour
2009-11-04
打赏
举报
回复
瞎猜啥,255是 ShortString 的限制,跟动态数组一毛钱的关系都没有
iamduo
2009-11-04
打赏
举报
回复
uPEPBClass.pas.549: SetLength(FPEPBData[AStockIndex].Data, Result + 1);
004FCE34 8B45F8 mov eax,[ebp-$08]
004FCE37 40 inc eax
004FCE38 50 push eax
004FCE39 8B4314 mov eax,[ebx+$14]
004FCE3C 8D443865 lea eax,[eax+edi+$65]
004FCE40 B901000000 mov ecx,$00000001
004FCE45 8B1588AA4F00 mov edx,[$004faa88]
004FCE4B E8B0C3F0FF call @DynArraySetLength//问题在这,为什么出错?
004FCE50 83C404 add esp,$04
解释一下,
“xxx其实应该是255条,虽然超过部分数据还在。但是超过后可能就不管了”
是我的理解。
我看到的是,SetLength第一个变量是AnsiString型,所以猜想最大是255个。
我可能用array of MyRecord的方法不对。
以上是我查Disassembly时候看到的。
在DynXXX函数调用后,我的Watch里就变了。(用的是D2010,D7下编译一样出错)
可以看到,我第一个Record里,有一个Item。
Item是我New的一个节点。
Item中有个参数MyInt原来显示“20090902{$1329016}”,后面应该是引用的地址吧。
(可能是为了优化,所以Integer类型都有地址)
在执行到上面地方的时候,就变成“0”,连地址都没有了。
郁闷中。。。。。
wintergoes
2009-11-04
打赏
举报
回复
为什么不管了?没付费吗
gyk120
2009-11-04
打赏
举报
回复
????
亮剑_
2009-11-04
打赏
举报
回复
没看明白
使用JAVA写出DBF出现乱码和数据错位(2)
最近在做项目的时候,发现有一个导出数据成DBF文件的功能的异常。导出的DBF文件用VFP或者打开,发现数据错位的现象,本该属于前一列的数据跑到后面那一列去了,这是问题一。还有一个问题,有的数据导出去以后出现了乱码,而且数据错位很严重,根本没有一条数据可以看的。而且tomcat是不报任何错误的。 之前没整过读写DBF文件这类的东西,也不太明白这个到底是什么原因,跟了一下代码,发现写进去
经常犯的sb错误、做题技巧合集
最近打比赛总是犯一些没有脑子的错误。 发现不好好总结一下,可能会经常犯。 而且还有些值得注意的地方。 打完题目一定要打对拍 Pascal选手千万千万注意——不要和C++选手玩时间,比暴力,不然会被爆艹一顿。 在调试过程中,数组开小的一定要在交题时改回来。 数组千万别开小。 文件输入输出千万不要打错。 Pascal的
set
length
要尽量少用,及其的慢。 Pascal里字符串的比较(如s='ab...
LaTex基本语法
1.LaTeX文件的通常语法如下: \documentstyle{article} \begin{document} This is a first example of a simple input file. \end{document} 如果是中文,将\documentstyle{article}改为 \documentstyle{carticle}
SnowFlake雪花算法源码分析&灵活改造,常见分布式ID生成解决方案
带着几个关注点去研读源码 算法设计的整体逻辑是什么,核心点是什么? 算法是如何达到高并发的? 算法的高并发能力
极限
? 既然是生成ID,那么生成的可用量有多大,可用的时间为多少,ID的存储方式? 算法是否有缺陷,如何避免或者改进? 算法是否可自由拓展或改造,以契合当前项目需求? SnowFlake源码: /** * Twitter_Snowflake * SnowFlake的结构(每部分用...
SpringBoot分片上传、断点续传、大文件极速秒传功能,这篇都帮你搞定!(典藏版)...
????这是一个或许对你有用的社群????一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料:《项目实战(视频)》:从书中学,往事中“练”《互联网高频面试题》:面朝简历学习,春暖花开《架构 x 系统设计》:摧枯拉朽,掌控面试高频场景题《精进 Java 学习指南》:系统学习,互联网主流技术栈《必读 Java 源码专栏》:知其然,知其所以然????这是一个或许...
语言基础/算法/系统设计
16,748
社区成员
33,247
社区内容
发帖
与我相关
我的任务
语言基础/算法/系统设计
Delphi 语言基础/算法/系统设计
复制链接
扫一扫
分享
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章