相关疑难解决方法(0)

将复杂记录写入文件

嗨我已经在我的项目中定义了一些记录,这些记录可能包含其他记录以及普通数据类型和其他记录的动态数组,它是记录类型的n个示例

  Type1=record
    x:integer;
  end;
  Type2=record
    Y:array of X;
    str:string;
  end;
Run Code Online (Sandbox Code Playgroud)

当我尝试将这些记录类型的变量之一保存到具有blockwrite函数的文件时,如下所示:

var
  Temp1:Type2;
  begin
    setlength(temp1.y,100);
    blockwrite(MyFile,Temp1,sizeOf(Temp1);
Run Code Online (Sandbox Code Playgroud)

它写的只是纯记录的大小,但是temp1有一个调整大小的dynmic数组,有人可以告诉我如何将复杂的记录写入文件,我的意思是像VB6中使用的那样.谢谢

arrays delphi record dynamic sizeof

6
推荐指数
1
解决办法
1313
查看次数

如何在TList中存储动态数组?

我需要存储未知数量的组.每个组都有未知数量的元素/项目.这是我的'小组':

 TGroup= array of Integer;     <------ dynamic array (as you can see) :)
Run Code Online (Sandbox Code Playgroud)

我想用TList来保持我的团队.我的想法是,我可能希望稍后访问这些组并向其添加更多项目.

我有这个代码,但我不能让它工作:

TYPE
   TGroup= array of Integer;                              // Each group has x items (x can be from 1 to 10000)


procedure TForm1.FormCreate(Sender: TObject);
VAR CurGroup: TGroup;
    grp, item: Integer;
    Groups: TList;                                        // can contain up to 1 million groups
begin
 Groups:= TList.Create;

 { Init }
 for grp:= 1 to 4  DO                                     // Put a dummy item in TList
  begin
   SetLength(CurGroup, 1);                                // Create new group
   Groups.Add(@CurGroup);                                 // …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-7

6
推荐指数
2
解决办法
7499
查看次数

有效地使用Delphi从文件中读取未知大小的块

在过去,我看过这项工作,但我从未真正理解应该如何做.
假设我们有一个已知数据类型文件,但未知长度,如动态数组TSomething,其中

type
  TSomething = class
    Name: String;
    Var1: Integer;
    Var2: boolean;
  end;
Run Code Online (Sandbox Code Playgroud)

但问题是,将来可能会扩展此对象类型,添加更多变量(例如Var3: String).
然后,使用旧版本保存的文件将不包含最新的变量.
文件读取过程应该以某种方式识别中的数据,使用如下算法:

procedure Read(Path: String)
begin
  // Read Array Size
  //   Read TSomething --> where does this record end? May not contain Var3!
  //   --> how to know that the next data block I read is not a new object?
end;
Run Code Online (Sandbox Code Playgroud)

我已经看过这个工作BlockReadBlockWrite …

delphi

4
推荐指数
2
解决办法
741
查看次数

如何将结构写入流?

我可以,或者我必须使用它自己的SaveToStream方法将其声明为一个类吗?

它只是数据,没有功能(虽然我现在可能会添加getter和setter)

delphi

2
推荐指数
2
解决办法
5612
查看次数

标签 统计

delphi ×4

arrays ×1

delphi-7 ×1

dynamic ×1

record ×1

sizeof ×1