Текущий архив: 2006.11.05;
Скачать: CL | DM;
ВнизОбъясните смысл ошибки. Найти похожие ветки
← →
pkm (2006-10-18 15:27) [0]Доброе время суток. Мне програ выдает такую ошибку при чтении информации из файла в переменную: Read beyond end of file. Спасибо за внимание.
← →
Сергей М. © (2006-10-18 15:29) [1]
> Read beyond end of file
Попытка прочитать данные за пределами файла.
← →
Elen © (2006-10-18 15:30) [2]
> pkm
Read beyond end of file - Чтение после конца файла. Хотелось бы код увидеть
← →
pkm (2006-10-18 16:06) [3]Код я могу только завтра показать. а на словах если то я из типизированного файла хочу прочитать текущую запись.
read(tip_file,str1,str2,arr)
где:
str1,str2:string;
arr: array [1..20,1..255] of char;
Вот.
← →
Сергей М. © (2006-10-18 16:07) [4]
> pkm (18.10.06 16:06) [3]
Вот завтра и приходи) .. С кодом)
← →
Elen © (2006-10-18 16:11) [5]
> pkm
Возможно ты не используеш Eof для определения конца файла.
а вот для этогоstr1,str2:string;
стоило-б границы задать типа string[100], например. И вообще какого типа файл, ато по read(tip_file,str1,str2,arr) смутно тип представляется
← →
palva © (2006-10-18 16:15) [6]> я из типизированного файла хочу прочитать текущую запись
Читать можно только в переменные того типа, который фигурирует в типе файла. А у вас переменные разных типов, да еще и строки. Как можно из файла прочитать длинную строку? Что вы имели ввиду?
← →
Плохиш © (2006-10-18 16:20) [7]
> pkm (18.10.06 16:06) [3]
> Код я могу только завтра показать. а на словах если то я
> из типизированного файла хочу прочитать текущую запись.
Для начала не плохо бы литературу по работе с типизованными файлами прочитать, потому что в коде написана полная чушь.
← →
Barloggg (2006-10-18 16:44) [8]да, сложность в том как именно строка записана.
типизованный файл прост для записи и загрузки если его правильно типизовать. в этом и сложность надо полагать. приведенный код неправилен в таком виде. хотя встроенный телепатор видит... впрочем он слишком много чего видит. подождем. :)
почему-то мне поточная структура кажется привлекательней... не знаю почему. но уже несколько лет только так и храню все в файлах...
← →
pkm (2006-10-18 17:34) [9]Книгу я открыл, но там только на пол странички и не одного примера. Вот теперь и тыкаюсь.
← →
Shirson © (2006-10-18 18:39) [10]Полностью согласен с Barloggg по поводу потоков.
← →
pkm (2006-10-19 07:27) [11]Всем привет.
Вот кодик принес на рассмотрение.
type
DB_qwest = packed record
var1: string[255];
var2: string[255];
var3: string[255];
ans: string[1];
st: array [1..20,1..73] of char;
end;
…
var
glav: Tglav;
qwest: file of db_qwest;
result,dbopen: boolean;
qwestcount:word;
fname: string;
rec: db_qwest;
…
//добавляю новую запись
Seek(qwest, qwestcount);
rec.var1:=edit_a.Text;
rec.var2:=edit_b.Text;
rec.var3:=edit_v.Text;
rec.ans:=Edit_ot.text;
//из мемо переносим в массив
for I := 0 to m_q.Lines.Count do
begin
st1:=m_q.Lines.Strings[i];
for j := 1 to length(m_q.Lines.Strings[i]) do
rec.st[i+1,j]:=st1[j];
end;
Write(qwest, Rec); //добавляю запись
qwestCount := FileSize(qwest); // новое кол. записей
Seek(qwest,qwestCount);
//до этого момента работает все отлично
…
// затем то, что я внес хочу отобразить на экране
read(qwest,rec); // вот на этой строчке он мне выдает ошибку
edit_a.Text:=rec.var1;
edit_b.Text:=rec.var2;
edit_V.Text:=rec.var3;
> Полностью согласен с Barloggg по поводу потоков.
А может кто даст сылку на потоки?
спасибо за внимание.
← →
palva © (2006-10-19 07:34) [12]Перед тем, как читать, надо сделать seek на начало или на ту запись, которая должна быть прочитана.
← →
MBo © (2006-10-19 07:43) [13]http://www.delphikingdom.ru/lyceum/seminar.asp?ID=2
← →
pkm (2006-10-19 07:47) [14]
> Перед тем, как читать, надо сделать seek на начало или на
> ту запись, которая должна быть прочитана.
У меня есть этот пункт.
> Seek(qwest,qwestCount);
> //до этого момента работает все отлично
> …
просто вместо кода где я
button.visible:=false // и так несколько раз
я поставил
...
Вот.
← →
ЮЮ © (2006-10-19 08:02) [15]
> for I := 0 to m_q.Lines.Count - 1 do
> Seek(qwest,qwestCount - 1);
← →
Elen © (2006-10-19 08:22) [16]
pkm *
> qwestCount := FileSize(qwest); // новое кол. записей
> Seek(qwest,qwestCount);
Если не ошибаюсь это получается переход в конец файла. Попробуй seek(qwest,1)- это поставит тебя в начало;
← →
pkm (2006-10-19 08:37) [17]
> Если не ошибаюсь это получается переход в конец файла. Попробуй
> seek(qwest,1)- это поставит тебя в начало;
Я добавляю запись в конец файла и сразу хочу встать на эту запись.
> for I := 0 to m_q.Lines.Count - 1 do
>
>
> > Seek(qwest,qwestCount - 1);
после такого изменения у меня перестала выскакивать ошибка. Большущее спасибо.
Только у меня возникла другая проблема. Я не могу из массива перекинуть данные в мемо. Говорит, что я читаю адресс "00000000"
а код вот:
for I := 1 to 20 do
begin
for j := 1 to 73 do
st1[j]:=rec.st[i,j];
m_q.Lines.Add(trim(st1));
st1:="";
end;
← →
Ketmar © (2006-10-19 08:41) [18]что и логично. AnsiString, F1.
← →
pkm (2006-10-19 08:42) [19]
> что и логично. AnsiString, F1.
Переведи пожалуйста.
← →
Elen © (2006-10-19 08:43) [20]
> pkm st1[j]:=rec.st[i,j];
Может лучше будетst1:=st1+rec.st[i,j];
← →
Ketmar © (2006-10-19 08:44) [21]>[19] pkm 19-Oct-2006, 08:42
>Переведи пожалуйста.
что неясно? где AnsiString набирать? в IDE. где F1 находится? слева и сверху, на клаве. плучишь раздел справки об анси-строках. читай. там всё написано.
← →
ЮЮ © (2006-10-19 08:47) [22]SetLength(st1, 73);
for j := 1 to 73 do
st1[j]:=rec.st[i,j];
← →
pkm (2006-10-19 08:49) [23]
> Может лучше будет st1:=st1+rec.st[i,j];
Работает. Благодарю всех за помощь.
Правда, чует мое сердце, что я еще вернусь на форум.
Страницы: 1 вся ветка
Текущий архив: 2006.11.05;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.053 c