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

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

16.11.2009, 13:57. Показов 1034. Ответов 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
13114 / 5895 / 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
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru