Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 30.10.2009, 17:03
JigaGun JigaGun вне форума
Прохожий
 
Регистрация: 30.10.2009
Сообщения: 3
Репутация: 10
Вопрос Вопрос по Record

Проблема в коде или голове, подскажите выдает ошибку: [Error] Unit1.pas(69): Illegal type in Write/Writeln statement

САМ КОД:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls;

type
   TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Button3: TButton;

   {TStation = Record
    StationNumber: Integer;
    StationAdress: String;
   end;}

    procedure FormCreate(Sender: TObject);
    procedure Button3Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  //Station: TStation;
  Form1: TForm1;
  File1: File of Byte;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  StringGrid1.Cells[0,0] := '№ станции';
  StringGrid1.Cells[1,0] := 'Адресс';
end;


procedure TForm1.Button3Click(Sender: TObject);
type
  TStation = Record
    StationNumber: String[6];
    StationAdress: String[40];
  end;
Var
  Station: TStation;
  Config: File of TStation;

begin
  //Station.StationNumber := Edit1.Text;
  //Station.StationAdress := Edit2.Text;
  AssignFile(Config,'Config.rgv');
  ReWrite(Config);
  try
    With Station do
      begin
        StationNumber := Edit1.Text;
        StationAdress := Edit2.Text;
      end;
    WriteLn(Config, Station);
  finally
  CloseFile(Config);
  end;
end;

end.
Admin: Пользуемся тегами для оформления кода!

Последний раз редактировалось Admin, 30.10.2009 в 17:07.
Ответить с цитированием
  #2  
Старый 30.10.2009, 17:15
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

1. Для типизированных файлов надо использовать только Write
2. В типе данных надо использовать паскалевскую строку (задавать как String[размер <= 255]).
Ответить с цитированием
  #3  
Старый 30.10.2009, 17:19
JigaGun JigaGun вне форума
Прохожий
 
Регистрация: 30.10.2009
Сообщения: 3
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
1. Для типизированных файлов надо использовать только Write
2. В типе данных надо использовать паскалевскую строку (задавать как String[размер <= 255]).


За первый пункт спасибо, принял к сведению.
Второй пункт, я вроде как выполнил сразу, или я что-то не понимаю?
Ответить с цитированием
  #4  
Старый 30.10.2009, 17:37
JigaGun JigaGun вне форума
Прохожий
 
Регистрация: 30.10.2009
Сообщения: 3
Репутация: 10
По умолчанию

Вылезла еще одна штука, прога пускается ошибок не выдает, но и не создает файл и не пишет в файл если самому создать
Ответить с цитированием
  #5  
Старый 30.10.2009, 20:36
Аватар для NIch
NIch NIch вне форума
Продвинутый
 
Регистрация: 02.06.2008
Адрес: Бендеры ПМР
Сообщения: 754
Репутация: 2446
По умолчанию

Вот хороший рабочий пример создания/открытия файла
Код:
begin
AssignFile (File, FileName);//Связать переменныю и файл
{$I-}
try
Reset (File);//открыть для чтения, append(File) если текстовый файл
...
{$I+}
if IOResult <> 0 then//если нет файла
Rewrite (File);//создать файл
...
finally
Close (File);
end;
end;
__________________
В начале был Бит, потом Байт и только потом появилось Слово...
Ответить с цитированием
  #6  
Старый 30.10.2009, 21:17
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

А нафига 2 секции обработки ошибок?
И одной достаточно.
Код:
{$I-} Reset (File); {$I+}
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #7  
Старый 30.10.2009, 21:20
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Цитата:
Сообщение от JigaGun
За первый пункт спасибо, принял к сведению.
Второй пункт, я вроде как выполнил сразу, или я что-то не понимаю?
Если делаете типизированый файл, то для его обратного чтения необходимо знать размер записи. Поэтому не абстрактный String неизвестной длины, а конкретный String[50].
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #8  
Старый 30.10.2009, 21:40
Аватар для NIch
NIch NIch вне форума
Продвинутый
 
Регистрация: 02.06.2008
Адрес: Бендеры ПМР
Сообщения: 754
Репутация: 2446
По умолчанию

Код:
{$I-} Reset (File); {$I+}
Просто если перед Reset не отключить проверку
Код:
{$I-}
то если нет файла будет ошибка, а если потом не включить, то возможны в других местах ошибки, если есть проблемы с доступом к файлу...
Просто в одной проге экспериментировал с этим, пришел к такому решению...это всего лишь имхо...
Подобный алгоритм можно реализовать по разному...
__________________
В начале был Бит, потом Байт и только потом появилось Слово...
Ответить с цитированием
  #9  
Старый 16.01.2010, 15:25
DungeonLords DungeonLords вне форума
Активный
 
Регистрация: 21.07.2008
Сообщения: 257
Репутация: 14
Смущение

[поднимаю старую тему для своего вопроса]

Вопрос: почему не могу обратится к записи:
Код:
 TdContact = record
    surface : TdSurfaceParameters;
    geom : TdContactGeom;
    fdir1 : TdVector3;
  end;
вот таким образом: TdContact.surface - вот здесь уже подчёркивается и орётся "Object or class type required". Что я не так делаю?
__________________
Делаем'c разные игры. Искать на glscene.ru
Ответить с цитированием
  #10  
Старый 16.01.2010, 20:28
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Напрямую к типу так нельзя. Сначала создайте перменную типа TdContact, а уже потом к ее свойствам обращайтесь.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:38.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025