Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
21 / 2 / 0
Регистрация: 08.11.2009
Сообщений: 27
1

Работа с файлами

16.11.2009, 13:57. Показов 863. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
не понимаю почему не работает код
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TFrmNPazzle.N3Click(Sender: TObject);
var FileName : String;
    Fl       : file of String[68];
    Str      : String[68];
begin
  if OpenDialog1.Execute then
    FileName:=OpenDialog1.FileName;
 
    AssignFile(Fl, FileName) ;
    Reset(Fl);
    While not EOF(Fl) do begin
      Read(Fl, Str); //Ошибка "Incompatible types"
    end;
end;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.11.2009, 13:57
Ответы с готовыми решениями:

Работа с файлами , хотелось бы с windows system файлами
всем привет, нужна интересная идея по программированию, работа с файлами , хотелось бы с windows...

Лабораторная работа №5. Работа с файлами и алгоритмы сортировки
1. Написать функцию Load для считывания из текстового файла (например, Workers.txt) информации о...

Работа с файлами(Запись,чтение,работа с данными)
Здравствуйте, никак не могу осилить файлы... Для начала вот само задание: В справочной автовокзала...

Работа с файлами, чтение/работа со строкой
Доброго времени суток. Начал работать с C++ Builder 6. Есть текстовый файл .txt с различными...

6
115 / 114 / 22
Регистрация: 29.08.2009
Сообщений: 174
16.11.2009, 14:27 2
нужно readln(f1,str) т.к. читаете в строку
0
21 / 2 / 0
Регистрация: 08.11.2009
Сообщений: 27
16.11.2009, 14:35  [ТС] 3
Не помогло. Та же ошибка.
Когда записывал в этот файл, работало только Write, WriteLn-выдавал ошибку. Я на Delphi c файлами не работал до этого, только на паскале. Где косяк? помогите.
0
115 / 114 / 22
Регистрация: 29.08.2009
Сообщений: 174
16.11.2009, 14:40 4
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TFrmNPazzle.N3Click(Sender: TObject);
var FileName : String;
    Fl       : textfile;
    Str      : String;
begin
  if OpenDialog1.Execute then
    FileName:=OpenDialog1.FileName;
 
    AssignFile(Fl, FileName) ;
    Reset(Fl);
    While not EOF(Fl) do begin
      Readln(Fl, Str); //Ошибка "Incompatible types"
    end;
end;
1
21 / 2 / 0
Регистрация: 08.11.2009
Сообщений: 27
16.11.2009, 14:43  [ТС] 5
Круто спасибо. Оказывается тип в дельфях такой есть "TextFile"
0
753 / 546 / 211
Регистрация: 12.11.2009
Сообщений: 1,100
16.11.2009, 14:44 6
по-моему, Fl описано неверно... Может надо TextFile...

Добавлено через 32 секунды
)))опоздала)))
1
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
16.11.2009, 15:14 7
Когда пишешь:
var
StrTmp : String[68];
При этом происходит на самом деле 2 действия: первое - неименованное объявление типа String[68], второе - объявление переменной этого типа.
Так как тип этот неименованный, то при объявлении
var
StrTmp1 : String[68];
StrTmp2 : String[68];
компилятор будет считать, что переменные StrTmp1 и StrTmp2 принадлежат разным типам.
Аналогично, если объявлено:
var
F : String[68];
StrTmp : String[68];
то команду:
Read(F, StrTmp);
компилятор посчитает ошибочной - т. к. файл F и переменная StrTmp с его точки зрения принадлежат разным типам.
Поэтому действовать надо так:
Delphi
1
2
3
4
5
6
7
8
type
  Str68 = String[68];
...
procedure ...
var
  F      : file of Str68;
  StrTmp : Str68;
...
Т. е. код надо переписать так. (Плюс устранение небольших дыр):
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
type
  Str68 = String[68];
 
procedure TFrmNPazzle.N3Click(Sender: TObject);
var
    FileName : String;
    Fl       : file of Str68;
    StrTmp   : Str68;
begin
  if not OpenDialog1.Execute then
    Exit;
 
  if not FileExists(OpenDialog1.FileName) then begin
    ShowMessage('Заданный файл не существует. Действие отменено.');
    Exit;
  end;
 
  FileName:=OpenDialog1.FileName;
  AssignFile(Fl, FileName) ;
  Reset(Fl);
  While not EOF(Fl) do begin
    Read(Fl, StrTmp);
    //...
  end;
  CloseFile(Fl);
end;
Здесь имя переменной Str заменено на StrTmp, т. к. Str перекрывает одну из функций Delphi.
---
Ну или действовать надо так, как написал Conn. Но иногда нужно обрабатывать файл именно как типизированный - с фиксированной длинной строки, например, String[68]. В этом случае действовать надо так как я выше написал.
1
16.11.2009, 15:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.11.2009, 15:14
Помогаю со студенческими работами здесь

работа с файлами
Пожалуйста помогите исправить программу. Необходимо написать программу которая бы создавала файл с...

Работа с файлами
Помогите пожалуйста составить программму Создать файл, содержащий сведения о том, какие из пяти...

Работа с файлами
Здравствуйте,помогите пожалуйста с решением задачи, Каждая строка текстового файла содержит...

Работа с файлами
Напишите программу, которая объединяет возможности программ “Добавление в файл” и “Поиск по файлу”....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru