Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.47 MB
Время: 0.033 c
1-65849
A natoly
2003-11-11 13:00
2003.11.20
Люди, помогите сделать ф-ю, вырезки части в строковой переменной


14-66128
Fix
2003-10-28 12:56
2003.11.20
Орешник


1-65996
Zheks
2003-11-10 12:55
2003.11.20
Как дописать в начало типизированного файла?


3-65769
Weare
2003-11-03 12:02
2003.11.20
Как запретить вставку записи?


1-65994
s
2003-11-10 12:36
2003.11.20
TChart





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