Форум: "Сети";
Текущий архив: 2002.11.25;
Скачать: [xml.tar.bz2];
ВнизСохранение масива.............. Найти похожие ветки
← →
Chlavik (2002-09-26 02:26) [0]Я пишу свою первую програмку за одно и разчехляюсь в Delphi тактак вот столкнулся с такой проблемой. Вот кусок моего кода
type
Config= record
checkit,DateAdd,Wrthis:Boolean;
tosave,PathOfRepwl:shortstring;
disk:string[1];
end; .........
причём дальше
var
datafile:config;
cfgfile:file of config;
.
.
.
.
Write(cfgFile,datafile);
так вот мне поребовалось записать статичекий масив в файл и не один если я его добавляю в в тип Config то Delphi выдаёт следуюющее [Error] MainUnit1.pas(287): Type "Config" needs finalization - not allowed in file type
Вообще можно сделать так как я може чего то не хватает или вообще как сохранить масив в файл?
← →
Вася Пупкин (2002-09-26 02:59) [1]Хммм.... А вы уверены, что добавляете в тип Config именно статический массив ?
type
Config = record
checkit,DateAdd,Wrthis:Boolean;
tosave,PathOfRepwl:shortstring;
disk:string[1];
Massiv:array [0..99] of byte;
end;
у меня странное ощущение, что Вы не указываете размерность массива -)
ps
Static array types are denoted by constructions of the form
array[indexType1, ..., indexTypen] of baseType
← →
Chlavik (2002-09-26 04:39) [2]Так я знаю но я указывал не array of byte а of string :)
Нужно обязательно byte а как мне записать масив строк? Извеняюсь за глупые вопросы.....
← →
Вася Пупкин (2002-09-26 07:35) [3]Нет -) Пример:
array[0..100] of shortstring;
или array[0..100] of string[20];
но не array[0..100] of string; -)
Можно конечно флажок Huge strings в опциях компилятора убрать....
{$H-} или {$LONGSTRINGS OFF}.... тогда Delphi будет понимать string как shotrstring....
The {$H-} state is mostly useful for using code from versions of Object Pascal that used short strings by default. You can locally override the meaning of string-type definitions to ensure generation of short strings. You can also change declarations of short string types to string[255] or ShortString, which are unambiguous and independent of the $H setting.
← →
Chlavik (2002-09-27 02:40) [4]Всё круто Delphi не ругается болше по поводу типа НО!
Короче прога компилируется всё как положено сохраняет масив а когда её перезапускаеш то она читает чёрти-что в некоторых елементах масива есть остатки того масива который был записан
а в остальных почти все значки ASCII таблици :) С кодом вроде всё нормально как записал так и прочитал:
Write(cfgfile,datafile);
.
.
.
.
Read(cfgfile,datafile);
что это за глюк может потому что я масив храню в типе Config вместе с данными другого типа.
Пока то что ты мне говорил помогало посмотрим что ты мне сегодня посоветуеш (Обращение к Васе Пупкине), и еще не знаете где достать русифицированный Help по Delphi 6? Вроде всё Жду ответа...
← →
Вася Пупкин (2002-09-27 22:25) [5]Гм....а файл Вы закрываете после записи?
CloseFile(cfgfile);
← →
Chlavik (2002-09-28 01:43) [6]Да ! Я ничего не могу понять !! Мне уже посоветовали заполнить весь масив а потм записать вот и я его заполнил пробелами
А масив из файла все равно не читается
Вот так выглядит мой код считывания
If not FileExists("PWL Explorer.cfg") then
begin
datafile.windir[0]:="windows";
datafile.windir[1]:="win";
datafile.windir[2]:="win98";
datafile.windir[3]:="win95";
datafile.windir[4]:="winme";
datafile.windir[5]:="win9x";
datafile.windir[6]:="windows.new";
datafile.windir[7]:="winda";
datafile.windir[8]:="windows98";
datafile.windir[9]:="notfound";
For h:=10 to 20 do datafile.windir[h]:=" ";
btStart.Enabled:=false;
exit;
end;
AssignFile(cfg,WorkDir + "PWL Explorer.cfg");
Reset(cfg);
if FileSize(cfg)<>0 then
begin
Read(cfg,datafile);
DirToSave:=datafile.tosave;
PathToRepwl:=datafile.PathOfRepwl;
Checkit1:=datafile.checkit;
DateAdd1:=datafile.DateAdd;
WrtHis1:=datafile.WrtHis;
btStart.Enabled:=True;
end
else
begin
btStart.Enabled:=False;
end;
CloseFile(cfg);
← →
Chlavik (2002-09-28 02:30) [7]Помойму я нашол свою ошибку
Дело в том что моя программа редактирует масив в другой форме
А сохраняет и читает в главной так что получается: я дописал заполнение масива перед записью в файл скомпилировал програму запустил она типа сохранила настройки потом этот код заполнения масива убрал и скомпилировал снова и что выдумаете когда запустил в ComBobox было всё чем я заолнял масив перед записью
Т.е. данные масива с одной формы не передаются в другую, А почему вить это глобальная переменная при том что при чтении масив передаётся из Главной вормы в форму настроек (Я же значения елементов масива вижу в ComboBox в форме настроек) а вот назад в главную форму нет, Я думаю следующий ваш совет решит мою проблему навсегда если вы меня правильно поймёте.
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2002.11.25;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c