Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.10.2008, 22:25   #1
amandra
Пользователь
 
Регистрация: 12.10.2007
Сообщений: 19
По умолчанию нетипизированный файл

Необходимо записать и потом прочитать нетипизированный файл
типа данных
Ttest = record
N1 : string;
n2 : integer;
end;


записываю в файл

var FName : string;
DFile : file;
asize : integer;
test : Ttest;
begin
test.N1 := 'Строка'; test.N2 := 10;
assignFile(DFile,FName);
Rewrite(DFile);
asize := sizeOf(test);
//записываю длину данных
BlockWrite(DFile,asize,sizeof(asize ));
//сами данные
BlockWrite(DFile,test,sizeof(test)) ;
CloseFile(DFile);


читаю из файла
var FName : string;
DFile : file;
asize : integer;
test : Ttest;
begin
fName := fmMain.OpenD.FileName;
assignFile(DFile,FName);
Reset(DFile);
//читаю сколько данных лежит
BlockRead(DFile,asize,4);
//читаю сами данные
Blockread(DFile,test,asize);
CloseFile(DFile);
end

первый раз записал, потом прочитал - все нормально
пытаюсь снова ,не закрывая программу, прочитать файл - вываливается акцесс виалейшн
с чего это вдруг? в чем может быть проблема?
amandra вне форума Ответить с цитированием
Старый 05.10.2008, 22:29   #2
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Код:
Ttest = record
N1 : string[255];
n2 : integer;
end;
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 05.10.2008, 22:39   #3
amandra
Пользователь
 
Регистрация: 12.10.2007
Сообщений: 19
По умолчанию

это не важно, так как я записываю в заголовок файла сколько надо читать потом
amandra вне форума Ответить с цитированием
Старый 05.10.2008, 22:41   #4
amandra
Пользователь
 
Регистрация: 12.10.2007
Сообщений: 19
По умолчанию

и тем более выдает ошибку IO error 1784 при записи данных
//сами данные
BlockWrite(DFile,test,sizeof(test)) ;
amandra вне форума Ответить с цитированием
Старый 05.10.2008, 23:22   #5
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

А ты попробуй сделать как я сказал
http://programmersforum.ru/showthread.php?t=23495
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 07.10.2008, 01:25   #6
amandra
Пользователь
 
Регистрация: 12.10.2007
Сообщений: 19
По умолчанию

другой вариант
типа данных
TLoadMess = record
PartnerFrom : string;
DataOut : TDate;
Trip : string;
Doc : string;
Price : currency;
placeTo : string;
PartnerTo : string;
DateIn : TDate;
TimeIn : TTime;
AllMass : currency;
AllPlace : integer;
CountOut : integer;
NumSeal : string;
discription : string;
end;

пищу в файл сначала размер структуры, потом сами данные
[I]mem := TMemoryStream.Create;
asize := sizeof(LoadMess);
mem.Write(asize,4);
mem.Write(LoadMess,asize);
mem.SaveToFile(FName);
mem.Free;[I]
читаю
mem := TMemoryStream.Create;
mem.LoadFromFile(fname);
mem.Read(asize,4);
mem.Read(LoadMess,asize);
mem.Free;

после прочтения в loadmess белиберда...
что не так сделал?
amandra вне форума Ответить с цитированием
Старый 07.10.2008, 07:44   #7
amandra
Пользователь
 
Регистрация: 12.10.2007
Сообщений: 19
По умолчанию

всем спасибо, разобрался
как Ozerich и говорил, надо указывать длину строки при объявлении рекорда, либо в файл писать сколько строка занимает места
amandra вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как с поиощью hiew вставить в файл строчку, "раздвинуть" файл и вставить туда строчку? barand Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 28.06.2008 10:58
[Pascal]Нетипизированный файл Fuaran8989 Помощь студентам 1 13.05.2008 09:14
Файл Ketu Паскаль, Turbo Pascal, PascalABC.NET 8 31.03.2008 07:10
Нетипизированный файл OrdJONY Общие вопросы Delphi 10 03.10.2007 18:39
Файл vitalik007 Общие вопросы Delphi 2 03.09.2007 22:07