Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.10.07;
Скачать: [xml.tar.bz2];

Вниз

насчет динамичских массивов   Найти похожие ветки 

 
Yank   (2002-09-26 00:18) [0]

Помогите, пожалуйста!
Я хочу сохранить в файл данных запись, содержащую динамический массив, но функция sizeOf возвращает размер самой записи без учета размера дин. массива, как быть? (Только начало записи сохраняется в файл)


 
Rouse_   (2002-09-26 00:50) [1]

полный юнит из моей программы

unit GlobalUnit;

interface

uses
Classes, ComCtrls, SysUtils;

type TPeriodical = (plOneTime, plEveryday, plWeekly, plMonthly, plStartUp);
type TSpetial = (spNone, spShutdown, spPowerOff, spScandisk, spDefragment);
type TStyle = (stNone, stOneTime, stWorck, stWeekend, stEveryday, stEveryweeck, stEveryMonth, stEveryMonthWeek);
type TDelete = (deNone, deCount, deTime);

type TTask = packed record
TaskID : Integer;
Name : String[255];
TaskMessage : String[255];
TaskSound : String[255];
FilePath : String[255];
Run : Boolean;
Priority : TThreadPriority;
Spetial : TSpetial;
SpetialDrive : Char;
Periodical : TPeriodical;
TimeStamp : TDateTime;
Style : TStyle;
FirstParam : Byte;
SeckondParam : Integer;
Length : TDelete;
DelParam : Double;
LastStart : TDateTime;
NextStart : TDateTime;
end;

var
TaskArray : array [0..100] of TTask;
TaskCount: Byte;

procedure AddTask( Value: TTask);
procedure SaveTasks;
procedure LoadTasks;
procedure ShowTasks(var ListView: TListView);
procedure GetNextStart( var Task: TTask);

implementation

procedure AddTask( Value: TTask);
begin
TaskArray[TaskCount] := Value;
Inc(TaskCount);
end;

procedure SaveTasks;
var
F: file of TTask;
i: Byte;
begin
AssignFile(f,"c:\Test.tsk");
Rewrite(f);
for i:= 0 to TaskCount-1 do
Write(f,TaskArray[i]);
CloseFile(f);
end;

procedure LoadTasks;
var
F: file of TTask;
begin
TaskCount := 0;
if not FileExists("c:\Test.tsk") then Exit;
AssignFile(f,"c:\Test.tsk");
Reset(f);
while not EOF(f) do begin
Read(f,TaskArray[TaskCount]);
Inc(TaskCount);
end;
CloseFile(f);
end;

procedure ShowTasks(var ListView: TListView);
var
i:Byte;
begin
if TaskCount = 0 then Exit;
for i:= 0 to TaskCount-1 do begin
with ListView.Items.Add do begin
Caption := TaskArray[i].Name;
SubItems.Add(DateToStr(TaskArray[i].NextStart));
if TaskArray[i].LastStart = 0 then SubItems.Add("none") else
SubItems.Add(DateToStr(TaskArray[i].LastStart));
SubItems.Add(TaskArray[i].TaskMessage);
SubItems.Add(TaskArray[i].FilePath );
end;
end;
end;

procedure GetNextStart(var Task: TTask);
begin
if Task.NextStart = 0 then Task.NextStart := Task.TimeStamp;
case Task.Style of
stOneTime: //


 
Rouse_   (2002-09-26 00:52) [2]

Будут вопросы, задавай сюда

Желаю успехов


 
Zuvom   (2002-09-26 01:03) [3]

Я всегда при работе с динамическими массивами использую переменную, которая является длиной массива.


 
Aleks1   (2002-09-26 04:26) [4]

Для динамических массивов определяющей является не функция SizeOf, а функция Length. При записи в файл определяй длину дин. массива и записывай столько байт, сколько нужно. Имхо, стоит записать и саму длину (или кол-во элементов массива), для последущего считывания.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.10.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.01 c
1-20986
Паша
2002-09-26 16:05
2002.10.07
Вопрос по FileMapping


3-20935
KIR
2002-09-18 02:22
2002.10.07
Что это за файлы создает Paradox: _QSQ12.DB(MB)


3-20890
cutter-pro
2002-09-16 15:57
2002.10.07
Заставь дурака богу молиться он и лоб себе расшебет


1-20975
DiHLoS
2002-09-26 14:01
2002.10.07
Как распечатать StringGrid?


3-20889
Юра
2002-09-16 17:12
2002.10.07
Как программно прописать User Name и Password





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский