Форум: "Начинающим";
Текущий архив: 2006.11.26;
Скачать: [xml.tar.bz2];
ВнизОшибкка при записи из одного файла в другой, используя тип. файлы Найти похожие ветки
← →
abba (2006-11-07 13:52) [0]var
f1,f2,f3:file of integer;
t1,t2,t3:integer;
i,j,x,y:integer;
begin
AssignFile(f1,"1.txt");
Reset(f1);
AssignFile(f2,"2.txt");
Rewrite(f2);
for i:=FileSize(f1)-1 downto 1 do
for j:=0 to i-1 do
begin
seek(f1,j);
read(f1,x,y);
seek(f2,j);
write(f2,x,y);
end;
CloseFile(f1);
CloseFile(f2);
end;
У меня переписывает из файла f1 в f2 не всё. Подскажите, пожалуйста, в чём ошибка?
Спасибо.
← →
Stanislav © (2006-11-07 13:56) [1]for i:=FileSize(f1)-1 downto 1 do
зачем -1 ?
← →
abba (2006-11-07 14:01) [2]А как? FileSize - кол-во записей в файле.
← →
Desdechado © (2006-11-07 14:02) [3]1. зачем здесь цикл по i ?
2. зачем здесь seek? если текущий указатель записи и так остается в последнем месте доступа к файлу?
3. зачем здесь типизированный файл, если можно безтиповым?
4. зачем здесь вообще такой способ, если можно воспользоваться системной функцией CopyFile(Ex) ?
← →
abba (2006-11-07 14:03) [4]Но мне нужен типизированный.
← →
Desdechado © (2006-11-07 14:05) [5]> Но мне нужен типизированный.
Зачем?
Для копирования файла не важен тип.
← →
abba (2006-11-07 14:07) [6]А как записывается CopyFile(Ex)?
f1:=CopyFile(f2); Но появляется ошибка?
← →
Neket (2006-11-07 14:08) [7]Страннный способ.
for i:=FileSize(f1)-1 downto 1 do
Самый простой и верный способ
While Eof(f1)<>true do
begin
Readln(f1,J);
WriteLN(F2,J)
end;
Если используешь Rewrite для F2 то будешь перезаписывать F2, если Append то в конец F2 будешь дописывать текст из F1.
← →
abba (2006-11-07 14:09) [8]А почему из файла с данными:
1
2
3
4
5
6
7
8
9
10
Он переписывает способом Neket
1
2
3
4
5
6
7
8
9
1
← →
Рамиль © (2006-11-07 14:10) [9]The CopyFile function copies an existing file to a new file.
BOOL CopyFile(
LPCTSTR lpExistingFileName, // pointer to name of an existing file
LPCTSTR lpNewFileName, // pointer to filename to copy to
BOOL bFailIfExists // flag for operation if file exists
);
Parameters
lpExistingFileName
Points to a null-terminated string that specifies the name of an existing file.
lpNewFileName
Points to a null-terminated string that specifies the name of the new file.
bFailIfExists
Specifies how this operation is to proceed if a file of the same name as that specified by lpNewFileName already exists. If this parameter is TRUE and the new file already exists, the function fails. If this parameter is FALSE and the new file already exists, the function overwrites the existing file and succeeds.
← →
Neket (2006-11-07 14:11) [10]Ты точно указал WriteLN и ReadLN
← →
Desdechado © (2006-11-07 14:11) [11]> А как записывается CopyFile(Ex)?
F1 нажать религия не позволяет?
> А почему из файла с данными
А потому, что там тип файла другой.
← →
Рамиль © (2006-11-07 14:15) [12]
> abba (07.11.06 14:09) [8]
Таки я тебя не понял. У тебя в файле строки что ли? Тогда зачем integer читаешь?
> Neket (07.11.06 14:08) [7]
> While Eof(f1)<>true do
While not Eof(f1) do
← →
abba (2006-11-07 14:15) [13]У меня в справке нет CopyFile(Ex).
var
f1,f2:file of integer;
t1
begin
AssignFile(f1,"1.txt");
Reset(f1);
AssignFile(f2,"2.txt");
Rewrite(f2);
while not eof(f1) do
begin
readln(f1,t1);
writeln(f2,t1);
end;
CloseFile(f1);
CloseFile(f2);
end;
Всё равно ошибка?
← →
Рамиль © (2006-11-07 14:17) [14]
> abba (07.11.06 14:15) [13]
Ответь на
Рамиль © (07.11.06 14:15) [12]
> abba (07.11.06 14:09) [8]
Таки я тебя не понял. У тебя в файле строки что ли? Тогда зачем integer читаешь?
← →
abba (2006-11-07 14:18) [15]У меня в файле целые числа.
← →
Neket (2006-11-07 14:19) [16]Да. Да. Да. Согласен с Рамилем. Какой тип файла? И что в нем содержится?
И вообще какие цели вы желаете достич?
← →
abba (2006-11-07 14:20) [17]А всё понял-понял-понял. Всё получилось. Спасибо за помощь и извините за мою глупость.
← →
Neket (2006-11-07 14:21) [18]Но при этом он у вас *.txt
Объявите файл как file of text, и все.
← →
Anatoly Podgoretsky © (2006-11-07 14:41) [19]> abba (07.11.2006 13:52:00) [0]
Типа Файлы не видать, зато есть типизированые файлы.
FileSize(f1)-1
Конечно не все, минус одна запись
← →
Anatoly Podgoretsky © (2006-11-07 14:43) [20]> Desdechado (07.11.2006 14:02:03) [3]
> 1. зачем
> ...
> 4. зачем
Тут много зачем, тут правильный диагноз, переписать все нафиг, лучше заменить одной командой CopyFile
← →
Anatoly Podgoretsky © (2006-11-07 14:43) [21]> abba (07.11.2006 14:03:04) [4]
> Но мне нужен типизированный.
5. Зачем?
← →
Anatoly Podgoretsky © (2006-11-07 14:44) [22]> abba (07.11.2006 14:07:06) [6]
> Но появляется ошибка?
Партизан?
← →
Anatoly Podgoretsky © (2006-11-07 14:45) [23]> Neket (07.11.2006 14:08:07) [7]
> Самый простой и верный способ
Еще более странный способ, для двоичных файлов.
← →
Anatoly Podgoretsky © (2006-11-07 14:45) [24]> abba (07.11.2006 14:09:08) [8]
Это не file of Integer
← →
Anatoly Podgoretsky © (2006-11-07 14:46) [25]> abba (07.11.2006 14:15:13) [13]
> У меня в справке нет CopyFile(Ex).
Переинсталируй Дельфи и больше не отказывайся от генофонда.
← →
Neket (2006-11-07 14:48) [26]
> Еще более странный способ, для двоичных файлов
Да но в данном случае налицо обычный текстовый файл...
← →
Anatoly Podgoretsky © (2006-11-07 14:51) [27]> Neket (07.11.2006 14:48:26) [26]
> Да но в данном случае налицо обычный текстовый файл...
Объявлен как типизированый.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.11.26;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.044 c