Форум: "Основная";
Текущий архив: 2003.11.20;
Скачать: [xml.tar.bz2];
ВнизПроблема при чтении из файла Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.01 c