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

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

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

Студворк — интернет-сервис помощи студентам
не понимаю почему не работает код
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
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.11.2009, 13:57
Ответы с готовыми решениями:

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

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

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

6
115 / 114 / 22
Регистрация: 29.08.2009
Сообщений: 174
16.11.2009, 14:27
нужно readln(f1,str) т.к. читаете в строку
0
21 / 2 / 0
Регистрация: 08.11.2009
Сообщений: 27
16.11.2009, 14:35  [ТС]
Не помогло. Та же ошибка.
Когда записывал в этот файл, работало только Write, WriteLn-выдавал ошибку. Я на Delphi c файлами не работал до этого, только на паскале. Где косяк? помогите.
0
115 / 114 / 22
Регистрация: 29.08.2009
Сообщений: 174
16.11.2009, 14:40
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  [ТС]
Круто спасибо. Оказывается тип в дельфях такой есть "TextFile"
0
 Аватар для Тамила
753 / 546 / 211
Регистрация: 12.11.2009
Сообщений: 1,100
16.11.2009, 14:44
по-моему, Fl описано неверно... Может надо TextFile...

Добавлено через 32 секунды
)))опоздала)))
1
 Аватар для Mawrat
13113 / 5894 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
16.11.2009, 15:14
Когда пишешь:
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.11.2009, 15:14
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru