Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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
14-82934
Yuraz
2002-11-04 17:42
2002.11.25
Мониторы


1-82830
Misha
2002-11-11 12:30
2002.11.25
Проблема с указателями на указатели


8-82868
Alex_E
2002-07-20 10:31
2002.11.25
Конвертация bmp- ico


7-83012
Groove
2002-09-20 09:46
2002.11.25
HDD


4-83073
dredd
2002-10-12 11:32
2002.11.25
udp





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский