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

Вниз

Работа с типизизованными файлами   Найти похожие ветки 

 
Evgeniy Efimchenko   (2010-10-20 15:58) [0]

Уважаемые программисты. Вопрос такого рода. Имеется некоторая структура данных, типа:
Type
TTask=record  
TimerInSec:integer;
TimeOf:TTime;
Descript:string[255];
ShutDown:Boolean;
Priority:Boolean;
PriorTime:byte;
StayedTime:TTime;

LanTimer:word;
LanTimeOf:TTime;
LanDescript:string[255];
LanIp:string[25];
LanPriority:Boolean;
LanPriorTime:byte;
LanShutDown:Boolean;
end;

type Toptions=record
Lern:Boolean;
 Alfa:byte;
ColorGam:Tcolor;
topwindow:boolean;
end;

type TProgOpt=record
end;

type TLoadData = class (TObject)
Options:Toptions;
Task:TTask;
ProgOpt:TProgOpt;
end;>


В программе создается экземпляр класса TLoadData, с которым программа и работает. В последствии требуется сохранить эту структуру в типизированный файл. Попытки типа:

procedure SaveFProfile(Profile:TLoadData;Pfile:string); // В Profile передается заполненный экземпляр
var f:file of TLoadData;
begin
AssignFile(F,PFile);
rewrite(f);
write(f,Profile);
closefile(f);
end;>


После попытки загрузки из программы.

procedure LoadFileProfile(Pfile:string;var Profile:TLoadData);
var f:file of TloadData;
begin
AssignFile(F,PFile) ;
reset(f);
Read(f,Profile);
closefile(f);
end;>


Profile оказывается пустым. Пробовал через winAPI результат тот же.

А в общем требуется сохранить все настройки программы не используя реестр и ini файл.


 
Медвежонок Пятачок ©   (2010-10-20 16:02) [1]

осле попытки загрузки из программы.
Profile оказывается пустым.


Ты в свой чудесный файл пробовал заглядывать?
После чудесного сохранения всех данных.


 
Amoeba_   (2010-10-20 16:13) [2]


> После попытки загрузки из программы. Profile оказывается пустым.

А иначе и быть не могло.

> Пробовал через winAPI результат тот же.

Можно было не терять время зря и не пытаться делать бесполезную работу.


> var f:file of TloadData;

Это не файл экземпляров класса, а всего лишь файл указателей, которые по размеру соответствуют Integer. В итоге в файл было записано просто значение указателя (var Profile:TLoadData это всего лишь указатель!), но никак не то, на что он указывает. Так что содержимое объекта таким макаром не сохраняют. Учите матчасть.


 
Amoeba_   (2010-10-20 16:15) [3]


> Попытки типа:
>
> procedure SaveFProfile(Profile:TLoadData;Pfile:string);
> // В Profile передается заполненный экземпляр
> var f:file of TLoadData;
> begin
> AssignFile(F,PFile);
> rewrite(f);
> write(f,Profile);
> closefile(f);
> end;>
>

И длина полученного файла - 4 байта. Угадал?


 
Evgeniy Efimchenko   (2010-10-20 16:27) [4]

Ну да четыре байта.

>Это не файл экземпляров класса, а всего лишь файл указателей, которые по размеру соответствуют Integer. В итоге в файл было записано просто значение указателя (var Profile:TLoadData это всего лишь указатель!), но никак не то, на что он указывает. Так что содержимое объекта таким макаром не сохраняют. Учите матчасть.

А ссылка на статью или еще какой пример имеется?
Проблему то решить не помог никто.

Получается придется все переопределять в record?


 
Amoeba_   (2010-10-20 16:45) [5]

l
> А ссылка на статью или еще какой пример имеется?

Вот статья:
http://rsdn.ru/article/delphi/serialization.xm


 
Amoeba_   (2010-10-20 16:46) [6]

Точнее http://rsdn.ru/article/delphi/serialization.xml


 
Evgeniy Efimchenko   (2010-10-20 16:54) [7]

Вот это по делу, вот за это спасибо!



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

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

Наверх





Память: 0.46 MB
Время: 0.004 c
15-1286210928
@!!ex
2010-10-04 20:48
2011.01.16
Где купить Штеуд не совместимый компьютер?


2-1287467671
ixen
2010-10-19 09:54
2011.01.16
Подскажите как написать триггер...


15-1285492613
Lamer@fools.ua
2010-09-26 13:16
2011.01.16


15-1285896207
wl
2010-10-01 05:23
2011.01.16
Антивирус for free


2-1287916159
Первокурсница
2010-10-24 14:29
2011.01.16
INSERT INTO table поля из двух других связанных таблиц





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