Главная страница
    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.04 c
15-1162887830
Игорь000
2006-11-07 11:23
2006.11.26
Помогите!


3-1158925372
тф
2006-09-22 15:42
2006.11.26
Проблема с CASE


15-1163062444
AVELINA
2006-11-09 11:54
2006.11.26
помогите инфой про wwExpandButton, plz...


1-1160634052
gdaujk
2006-10-12 10:20
2006.11.26
Вариантный массив


2-1163008529
frozen_eye
2006-11-08 20:55
2006.11.26
txt + exe = ???





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