Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.043 c
2-1162289534
Muhh
2006-10-31 13:12
2006.11.26
Как в combobox добавить картинку??


15-1162897495
DiamondShark
2006-11-07 14:04
2006.11.26
Отцы, посоветуйте ламеру.


2-1162885275
EkZot
2006-11-07 10:41
2006.11.26
Чем заменить пробел в командной строке.


15-1162913600
Real
2006-11-07 18:33
2006.11.26
7-ое ноября: С праздником, товарищи!


2-1162835085
ice321i
2006-11-06 20:44
2006.11.26
Проблемма переноса ZipTV





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