Главная страница
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.018 c
1-65822
rel_
2003-11-10 11:58
2003.11.20
Вопрос по Excel


14-66075
Lutsifer
2003-10-22 21:20
2003.11.20
Помогите начинающему программисту.


14-66069
volser
2003-10-29 11:00
2003.11.20
Часы виды


1-65839
Марат
2003-11-10 08:00
2003.11.20
StringGrid


1-65912
Alexious
2003-11-08 13:53
2003.11.20
Закрытие формы