|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
05.10.2008, 22:25 | #1 |
Пользователь
Регистрация: 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 первый раз записал, потом прочитал - все нормально пытаюсь снова ,не закрывая программу, прочитать файл - вываливается акцесс виалейшн с чего это вдруг? в чем может быть проблема? |
05.10.2008, 22:29 | #2 |
Студент 1 курса
Форумчанин Подтвердите свой е-майл
Регистрация: 27.06.2008
Сообщений: 959
|
Код:
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
|
05.10.2008, 22:39 | #3 |
Пользователь
Регистрация: 12.10.2007
Сообщений: 19
|
это не важно, так как я записываю в заголовок файла сколько надо читать потом
|
05.10.2008, 22:41 | #4 |
Пользователь
Регистрация: 12.10.2007
Сообщений: 19
|
и тем более выдает ошибку IO error 1784 при записи данных
//сами данные BlockWrite(DFile,test,sizeof(test)) ; |
05.10.2008, 23:22 | #5 |
Студент 1 курса
Форумчанин Подтвердите свой е-майл
Регистрация: 27.06.2008
Сообщений: 959
|
А ты попробуй сделать как я сказал
http://programmersforum.ru/showthread.php?t=23495
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
|
07.10.2008, 01:25 | #6 |
Пользователь
Регистрация: 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 белиберда... что не так сделал? |
07.10.2008, 07:44 | #7 |
Пользователь
Регистрация: 12.10.2007
Сообщений: 19
|
всем спасибо, разобрался
как Ozerich и говорил, надо указывать длину строки при объявлении рекорда, либо в файл писать сколько строка занимает места |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как с поиощью 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 |