Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Записи, как с ними работать 
:(
    Опции темы
Анютка
Дата 20.1.2006, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 22.11.2005
Где: Моск.область

Репутация: нет
Всего: нет



1.Объясните,как работать с записями.Обязательно ли ссылаться на файлы данных?
2.Объясните еще в чем разница между процедурами и функциями.
Заранее спасибо!!!
PM MAIL   Вверх
Guedda
Дата 20.1.2006, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: нет
Всего: 78



2. Функции возвращают какой либо результат
Код

function Tratata : Integer; //возвращают результат типа  Integer;

Процедуры могут не возвращать результат. Что то типа:
Код

procedure Tratata2;
begin
  Writeln('Hello World!'); //Из этой процедуры в программу ничего не выходит.
end;

1. record
Пример:
Код

type
  TTrataZapis = record
    x : Integer; // положение Х
    y : Integer; // положение У
  end;


Доступ к полям записи осуществляются просто:
Код

var
  Zapis : TTrataZapis;
begin
  Zapis.x := 10;
  Zapis.y := 100;
  Writeln(Zapis.x); // выведет результат "100"
end;



--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Zero
Дата 20.1.2006, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



1. Короче по русски отличие записи от массива, заключается в том что массивы имеют набор данных одного типа, а записи разных типов.
2. Процедура это таже функция но тип возвращаемого значения типа Void, т.е. не возвращает ничего.
PM MAIL ICQ   Вверх
Guedda
Дата 20.1.2006, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: нет
Всего: 78



типа Void в Паскале не существует. Не забивайте девушке голову.


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Rencom
Дата 21.1.2006, 01:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 27.9.2005

Репутация: нет
Всего: нет



Guedda эта девушка наголову села, хочет чтобы мы тут за нее постоянно домашнюю работу делали....
PM MAIL   Вверх
Анютка
Дата 21.1.2006, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 22.11.2005
Где: Моск.область

Репутация: нет
Всего: нет



Цитата(Rencom @ 21.1.2006, 01:21)
Guedda эта девушка наголову села, хочет чтобы мы тут за нее постоянно домашнюю работу делали....

Никому я на голову не садилась!!!Просто попросила по-человечески объяснить!!!
PM MAIL   Вверх
Guedda
Дата 21.1.2006, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: нет
Всего: 78



Ну, нормально объяснили?
Не обижайтесь... Девушкам нельзя волноваться.


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Анютка
Дата 21.1.2006, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 22.11.2005
Где: Моск.область

Репутация: нет
Всего: нет



Цитата(Guedda @ 21.1.2006, 16:36)
Ну, нормально объяснили?
Не обижайтесь... Девушкам нельзя волноваться.

Да,большое спасибо! smile
PM MAIL   Вверх
Zero
Дата 22.1.2006, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(Анютка @ 21.1.2006, 20:00 Найти цитируемый пост)

Цитата(Guedda @ 21.1.2006, 16:36)
Ну, нормально объяснили?
Не обижайтесь... Девушкам нельзя волноваться.

Да,большое спасибо! smile

А вот и не правду говорит она. smile
Т.к. там написано не понятно. В частности там ошибка:
Цитата(Guedda @ 20.1.2006, 14:42 Найти цитируемый пост)

код Pascal/Delphi
var
  Zapis : TTrataZapis;
begin
  Zapis.x := 10;
  Zapis.y := 100;
  Writeln(Zapis.x); // выведет результат "100"
end;

Выведится результат не 100 а 10, и то это только, при условии, что аргумент процедуры writeln преобразовать к строковому типу, иначе просто выдастся ошибка.
PS: в Паскале не существует, smile перегрузки операторов как в С++, т.е. автоматического преобразования типов. smile
И кроме того, в записях отличительной чертой является, то что они могут содержать данные нескольких типов, а в этом примере, они получаются как обычный массив.

Это сообщение отредактировал(а) Zero - 22.1.2006, 19:45
PM MAIL ICQ   Вверх
volvo877
Дата 22.1.2006, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Цитата(Zero @ 22.1.2006, 18:40 Найти цитируемый пост)

Выведится результат не 100 а 10, и то это только, при условии, что аргумент процедуры writeln преобразовать к строковому типу, иначе просто выдастся ошибка.
smile Да что ты говоришь? Неужели же в Паскале не предусмотрена печать НЕстроковых переменных через WriteLn? Ты в Хелп-то давно заглядывал? Попробуй, помогает!!!
Цитата(Zero @ 22.1.2006, 18:40 Найти цитируемый пост)

PS: в Паскале не существует, smile перегрузки операторов как в С++
А перегрузка тебе здесь зачем? WriteLn - не процедура вообще-то, чтобы что-то перегружать... Макрос это. Учи матчасть...
Код
var n: integer;
begin
  n := 100;
  Writeln(n, ' What is going on? Should be error, but it works!!! ');
end.
А теперь расскажи, чем этот пример отличается от примера с записью? Я здесь тоже не приводил N к строковому типу... Однако он прекрасно отработал...

PM MAIL   Вверх
Albinos_x
Дата 22.1.2006, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: нет
Всего: 108



Цитата(Zero @ 22.1.2006, 19:40 Найти цитируемый пост)

Выведится результат не 100 а 10

Цитата(Zero @ 22.1.2006, 19:40 Найти цитируемый пост)

...
Zapis.x := 10;
...
Writeln(Zapis.x)

так и должно быть... с чего она вдруг 100 выведет...
Цитата(Zero @ 22.1.2006, 19:40 Найти цитируемый пост)

при условии, что аргумент процедуры writeln преобразовать к строковому типу, иначе просто выдастся ошибка.

ты наверно с чем-то попутал.... всё нормально будет работать...


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Zero
Дата 23.1.2006, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(volvo877 @ 22.1.2006, 21:56 Найти цитируемый пост)

Неужели же в Паскале не предусмотрена печать НЕстроковых переменных через WriteLn?

Стоп, извиняюсь за дизынформацию... У меня после Сессии, бошка немного не в ту сторону пошла. smile Каждое выражение вывода должно иметь тип Char, Integer, Real, String, Packed String или Boolean.
Цитата(volvo877 @ 22.1.2006, 21:56 Найти цитируемый пост)

А перегрузка тебе здесь зачем? WriteLn - не процедура вообще-то, чтобы что-то перегружать... Макрос это. Учи матчасть...

Цитата(volvo877 @ 22.1.2006, 21:56 Найти цитируемый пост)

Ты в Хелп-то давно заглядывал? Попробуй, помогает!!!

Вот ты туда и загляни, а мат. часть тут не причём.
Краткая цитата:
Цитата

WriteLn (процедура)

Выполняет процедуру Write, затем записывает
маркер конца строки в файл.

Объявление:
Procedure WriteLn([ Var F : Text; ] P1 [, P2, ...,Pn ] );

А если переменная типа "файл" отсутствует, то выводит данные на экран.
Цитата(Albinos_x @ 23.1.2006, 00:59 Найти цитируемый пост)

так и должно быть... с чего она вдруг 100 выведет...

А как на счёт тут:?
Цитата(Guedda @ 20.1.2006, 14:42 Найти цитируемый пост)

Writeln(Zapis.x); // выведет результат "100"

PM MAIL ICQ   Вверх
Albinos_x
Дата 25.1.2006, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: нет
Всего: 108



Цитата(Zero @ 23.1.2006, 14:48 Найти цитируемый пост)

А как на счёт тут:?

просто кто-то опечатался...
прости, не заметил... я подумал, что твой пост...


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.1001 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.