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

Вниз

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

 
Женя   (2010-09-22 19:24) [0]

Помогите разобраться пожалуйста. пишу небольшую программу,
и тут непонятная ошибка. Выскакивает при завершении процедуры (после сообщения "проверка")

procedure Write;
var x,s:string; i,j:integer; k:integer;
begin
AssignFile(f1,Form1.Edit1.Text);
Reset(f1);
SetLength(fp,Form1.Memo1.Lines.Count+1);

for k:=0 to Form1.Memo1.Lines.Count-1 do begin
 ShowMessage(IntToStr(k));
AssignFile(f2,Form1.Memo1.Lines.Strings[k]);
 ShowMessage(Form1.Memo1.Lines.Strings[k]);
Reset(f2);
seek(f1,FileSize(f1));

fp[k].size:=FileSize(f2);
fp[k].Lst:=FileSize(f1);

While not eof(f2) do
begin
 BlockRead(f2,x,1);
 BlockWrite(f1,x,1);
{  inc(i);
  if i=10 then begin
   BlockWrite(f1,x,1);
   i:=0;
  end;  }
end;
 CloseFile(f2);
{if i<>0 then BlockWrite(f1,x,1);}
 fp[k].Lend:=FileSize(f1);
end;

for j:=0 to Form1.Memo1.Lines.Count-1 do begin
 s:="<~b><s>"+IntToStr(fp[j].size)+"<st>"+IntToStr(fp[j].Lst)+"<e>"+IntToStr(fp[j].Lend)+"<~e>";
 for i:=1 to Length(x)-1 do BlockWrite(f1,x[i],sizeof(char));
                                       end;
CloseFile(f1);
ShowMessage("проверка");
end;


 
Женя   (2010-09-22 19:30) [1]

пишет что не в ту область памяти лезу ..


 
Anatoly Podgoretsky ©   (2010-09-22 19:45) [2]

> Женя  (22.09.2010 19:30:01)  [1]

Так и пишет, а случайно не твой ли это перевод?


 
mike   (2010-09-22 21:34) [3]


> случайно не твой ли это перевод?

Небось beyond the end of the file


 
Женя   (2010-09-22 22:00) [4]

>>>>Access violation at address 0000000.Read of address 00000000.
причем все действия выполняются правильно (файл f1 пополняется)


 
Германн ©   (2010-09-22 22:28) [5]


> Женя   (22.09.10 22:00) [4]

Во-первых процедура Reset имеет два параметра. И хоть второй необязательный про него настоятельно рекомендуется прочитать в справке.


 
sniknik ©   (2010-09-22 22:32) [6]

> BlockRead(f2,x,1);


 
RWolf ©   (2010-09-23 01:43) [7]

прежде чем читать блок данных в буфер, надо выделить под него память.
строка x нигде не инициализировалась, так что буфер не создан &#8594; имеем AV.


 
Германн ©   (2010-09-23 01:57) [8]

Вообще-то в сабже ошибок столько, что я могу лишь дать ссылку на лицей http://www.delphikingdom.com/lyceum/seminar.asp?ID=2


 
han_malign   (2010-09-23 08:27) [9]


> строка x нигде не инициализировалась, так что буфер не создан
> &#8594; имеем AV.

младший байт ссылки на строку x инициализирован BlockRead(f2,x,1) - при выходе из процедуры compiler magic пытается освободить ненулевую ссылку на строку...

З.Ы. для всех динамических магических переменных компилятор генерирует код инициализации в преамбуле функции и код "финализации" в неявной секции try finally...


 
Женя   (2010-09-23 15:43) [10]

спасибо ;)



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

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

Наверх





Память: 0.46 MB
Время: 0.004 c
2-1285168987
Rembo2010
2010-09-22 19:23
2010.12.19
Как в Delphi сделать нестандартную форму?


4-1242801996
Miracle
2009-05-20 10:46
2010.12.19
Запрет доступа к съёмным носителям с помощью SetNamedSecurityInfo


11-1227267675
Sergey1991
2008-11-21 14:41
2010.12.19
Неправильно отображаются большие числа в TTable


15-1283258914
pasha_golub
2010-08-31 16:48
2010.12.19
Киев, 13 сентября 2010г., семинар Embarcadero


15-1283925708
sniknik
2010-09-08 10:01
2010.12.19
Что за проблема с кнопками?





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