Вы выбираете ee.nombre, COUNT (ve.IdEmpleado), но присваиваете его только 1 переменной
.
У вас есть записи, объекты и классы.
Записи доступны после turbo pascal 1. Они легкие, могут иметь свойства и методы, но они не поддерживают наследование. Есть некоторые проблемы с функциями, возвращающими записи. Если в этих записях есть методы, это иногда дает внутренние ошибки:
type
TRec = record
function Method1: Integer;
end;
function Func: TRec;
procedure Test;
var
x : TRec;
begin
Func.Method1; // Sometimes crashes the compiler
// Circumvention:
x := Func;
x.Method1; // Works
end;
Объекты вводятся с турбо паскаль 5, если я прав. Затем они предоставили возможность ОО с паскалем. Они более или менее устарели с введением Delphi, но вы все равно можете их использовать. Объекты могут реализовывать интерфейсы.
Классы представлены в Delphi 1 и наиболее универсальны. Они реализуют интерфейсы и поддерживают наследование. Но каждая переменная класса - это скрытый указатель. Это означает, что классы нужно создавать в куче. К счастью, этот процесс в основном скрыт.
Ниже приведена таблица с различиями между ними. Я добавил интерфейс для завершения.
|Class|Object|Record|Interface|
------------------|-----------------------------|
Are pointers? | y | n | n | y |
Inheritance | y | y | n | y |
Helpers | y | n | y | n |
Impl. Interface | y | y | n | - |
Visibility | y | y | n | n |
Method | y | y | y | y |
Fields | y | y | y | n |
Properties | y | y | y | y |
Consts | y | y | y | n |
Types | y | y | y | n |
Variants | n | n | y | n |
Virtual | y | n | y | - |
------------------|-----------------------------|
Вы можете использовать перегрузку оператора (например, неявные преобразования). Это можно сделать в Delphi 2007+ или 2006.NET и с объектами, но только с этими записями в Win32 2006 года.
В дополнение к другим ответам (перегрузка операторов, легковесные типы значений) рекомендуется делать записи перечислителей вместо классов. Поскольку они размещены в стеке, нет необходимости создавать и разрушать их, что также устраняет необходимость в скрытом блоке try..finally, который компилятор размещает вокруг перечислителей классов.
См. http: //hallvards.blogspot.com/2007/10/more-fun-with-enumerators.html для получения дополнительной информации.
Я думаю, что эти возможности также были доступны в Delphi 8 и 2005.
Главное правило: если вы сомневаетесь, используйте класс.
В остальном вы должны понимать главное отличие: объекты класса всегда используются через ссылку и создаются путем вызова конструктора.
Управление памятью и распределение для записей такие же, как и для основных типов ( т.е. целое, двойное). Это означает, что они передаются методам по значению (если не используется var). Также вам не нужно освобождать записи, и поэтому они поддерживают перегрузку операторов. Но без наследования, виртуальных методов и т. Д. Новые записи могут иметь конструктор, но его использование не обязательно.
Основные области и критерии использования записей:
при работе со структурами из Win32 API
, когда типы не t имеют идентичность (поскольку присваивание означает копирование)
, когда экземпляры не слишком велики (копирование больших записей становится дорогостоящим)
при построении типов значений, поведение которых должно имитировать числовые типы. Примерами являются DateTime, Комплексные числа, Векторы и т. Д. Перегрузка операторов - хорошая функция, но не делайте это решающим фактором.
И с точки зрения эффективности не переусердствуйте:
И, наконец, правила использования класса или записей практически не изменились по сравнению с более ранними версиями Delphi.
Кроме того, перегрузка операторов - отличная функция, но не делайте ее решающим фактором.И с точки зрения эффективности не переусердствуйте:
И наконец, правила использования класса или записей практически не изменились по сравнению с более ранними версиями Delphi.
Кроме того, перегрузка операторов - отличная функция, но не делайте ее решающим фактором.И с точки зрения эффективности не переусердствуйте:
И наконец, правила использования класса или записей практически не изменились по сравнению с более ранними версиями Delphi.