Код тривиальный, в одном месте программы работает, имеется в виду в одном модуле.
OpenDialog1.Filter := 'Text doc|*.txt';
if OpenDialog1.Execute and FileExists(OpenDialog1.FileName) then
begin
AssignFile(InFile,OpenDialog1.FileName);
Rewrite(InFile);
ii:=0;
jj:=1;
В основном модуле выдает ошибку 104 в следуюшей строке....
while not Eoln(InFile) do
begin
Readln(InFile, s);
//ShowMessage(s + ' ' + IntToStr(Length(s)));
//for jj:=1 to 6 do
for ii:=1 to Length(s) do
if s[ii] = '"' then
begin
mas[jj]:=ii;
jj:=jj+1;
end;
end;
CloseFile(InFile);
end;
Открываемый документ имеет следующий вид
"Васильев В.В.","Основное подразделение",0
"Денисенко Антон","Основное подразделение",0
"Мариненко Наталья","Основное подразделение",0
"Павлова Ольга","Основное подразделение",0
Перебробовал и Eoln и Eof что то ничего не прет.... Вот что написано в справке по этому поводу^ Error 104 File not open for input Reported by Read, Readln, Eof, Eoln, SeekEof, or SeekEoln on a text file if the file is not open for input.
Здравствуйте, orger, Вы писали:
O>Код тривиальный, в одном месте программы работает, имеется в виду в одном модуле.
O>O>OpenDialog1.Filter := 'Text doc|*.txt';
O>if OpenDialog1.Execute and FileExists(OpenDialog1.FileName) then
O>begin
O>AssignFile(InFile,OpenDialog1.FileName);
O>Rewrite(InFile);
Это процедура делает файл только для записи!
Попробуй Reset(InFile)
Reset(InFile);
O>Перебробовал и Eoln и Eof что то ничего не прет.... Вот что написано в справке по этому поводу^ Error 104 File not open for input Reported by Read, Readln, Eof, Eoln, SeekEof, or SeekEoln on a text file if the file is not open for input.
Процедура
Rewrite — открывает файл ТОЛЬКО для записи.
Для чтения и записи используй процедуру
Reset.
O>Открываемый документ имеет следующий вид
O>"Васильев В.В.","Основное подразделение",0
O>"Денисенко Антон","Основное подразделение",0
O>"Мариненко Наталья","Основное подразделение",0
O>"Павлова Ольга","Основное подразделение",0
Я так понимаю тебе нужно распарсить этот документ и заполнить некий список?
Попробуй так:
Var S1 : String;
begin
while not EoF(InFile) do
begin
Readln(InFile, s);
ii := Pos(',',S);
While ii>0 Do
begin
S1 := StringReplace(Copy(S,1,ii-1),'"','',[rfReplaceAll]);
Delete(S,1,ii);
// добавляем первую строку S1
ii := Pos(',',S);
end;
If S<>''
Then
//Добавляем полседний 0
end;
CloseFile(InFile);
end;
... -= RSDN@Home 1.1.4 beta 4 rev 358 =- А в Winamp'e: И ничего не слышно...