Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.20;
Скачать: CL | DM;

Вниз

Проблема при чтении из файла   Найти похожие ветки 

 
ovling   (2003-11-11 12:19) [0]

Добрый день, Мастера!
При чтении из файла в консольной программе вылетает ошибка: "Exception EAccessViolation in module Project1.exe at 000086B5"
и т. д. Программа вылетает.
Ошибка появляется при попытке считать значение переменной типа AnsiString, если предварительно в неё была записана пустая строка из файла.
Чтение производилось с помощью функции readln.
Зарание благодарен за помощь.


 
MBo ©   (2003-11-11 12:23) [1]

код покажи


 
ovling   (2003-11-11 17:16) [2]

нет проблем...

program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

var TextString: AnsiString;
FilePath:String;
i, j, k, JornalNumber, NumberOfFolders, FirstLine, SecondLine:integer;
InputText, OutputText:Text;
begin
write("Issue of a magazine "); readln(JornalNumber);
write("Number of last page is "); readln(NumberOfFolders);
write("The first important line is "); readln(FirstLine);
write("The second impotant line is "); readln(SecondLine);

for i:=1 to NumberOfFolders do
begin
If i<10 then FilePath:=concat("00",FloatToStr(i));
If (i>9) And (i<100) then FilePath:=concat("0",FloatToStr(i));
If (i>99) And (i<1000) then FilePath:=concat(FloatToStr(i));
If FileExists(concat(FilePath,"\1.html"))=true then
begin
Assign(OutputText,concat(FilePath,".htm"));
Rewrite(OutputText);
writeln(OutputText,"<html><head><title>Xakep #",floatToStr(JornalNumber),"</title></head><body>");
writeln(OutputText,"<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td>");
for j:=1 to 9 do
begin
If FileExists(concat(FilePath,"\",FloatToStr(j),".html"))=true then
begin
Assign(InputText,concat(FilePath,"\",FloatToStr(j),".html"));
Reset(InputText);
readln(InputText,TextString); k:=1;
While TextString[2]<>"c" do
begin {ошибку выдаёт в следующей строке}
if ((k>=FirstLine)And(j=1)) OR (k>=SecondLine) then writeln(OutputText,TextString);
k:=k+1;
readln(InputText,TextString);
end;
CloseFile(InputText);
end;
end;
writeln(OutputText,"<center><p><a href="index.htm">Содержание</a> </center>");
writeln(OutputText,"</td></tr></table>");
writeln(OutputText,"</body></html>");
CloseFile(OutputText);
end;
end;
writeln("Files have been converted successfully!");;
readln;
end.
{******************************************************}
{<html>

<head>

и так далее ...
}


 
Anatoly Podgoretsky ©   (2003-11-11 17:19) [3]

Это ошибка TextString[2], с чего ты решил, что в строке есть 2 символа?


 
ovling   (2003-11-11 17:19) [4]

нет проблем...


program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

var TextString: AnsiString;
FilePath:String;
i, j, k, JornalNumber, NumberOfFolders, FirstLine, SecondLine:integer;
InputText, OutputText:Text;
begin
write("Issue of a magazine "); readln(JornalNumber);
write("Number of last page is "); readln(NumberOfFolders);
write("The first important line is "); readln(FirstLine);
write("The second impotant line is "); readln(SecondLine);

for i:=1 to NumberOfFolders do
begin
If i<10 then FilePath:=concat("00",FloatToStr(i));
If (i>9) And (i<100) then FilePath:=concat("0",FloatToStr(i));
If (i>99) And (i<1000) then FilePath:=concat(FloatToStr(i));
If FileExists(concat(FilePath,"\1.html"))=true then
begin
Assign(OutputText,concat(FilePath,".htm"));
Rewrite(OutputText);
writeln(OutputText,"<html><head><title>Xakep #",floatToStr(JornalNumber),"</title></head><body>");
writeln(OutputText,"<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td>");
for j:=1 to 9 do
begin
If FileExists(concat(FilePath,"\",FloatToStr(j),".html"))=true then
begin
Assign(InputText,concat(FilePath,"\",FloatToStr(j),".html"));
Reset(InputText);
readln(InputText,TextString); k:=1;
While TextString[2]<>"c" do
begin {ошибку выдаёт в следующей строке}
if ((k>=FirstLine)And(j=1)) OR (k>=SecondLine) then writeln(OutputText,TextString);
k:=k+1;
readln(InputText,TextString);
end;
CloseFile(InputText);
end;
end;
writeln(OutputText,"<center><p><a href="index.htm">Содержание</a> </center>");
writeln(OutputText,"</td></tr></table>");
writeln(OutputText,"</body></html>");
CloseFile(OutputText);
end;
end;
writeln("Files have been converted successfully!");;
readln;
end.

{******************************************************}
А это пример текста в файле

html

head

и так далее ...

Зарание благодарен.



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

Текущий архив: 2003.11.20;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.027 c
3-65755
chtr
2003-10-31 11:04
2003.11.20
Rave reports - две колонки.


1-65844
slivka
2003-11-09 22:50
2003.11.20
Проблемма с Function. Подскажите что я сделал не так .


3-65778
Ozone
2003-10-30 16:20
2003.11.20
Access + ADO


8-66013
Валерка
2003-07-24 10:46
2003.11.20
Увеличение изображения


14-66074
Izyum
2003-10-29 17:24
2003.11.20
Оформление форума