powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как переопределить метод объекта virtual->override
13 сообщений из 38, страница 2 из 2
Как переопределить метод объекта virtual->override
    #39946091
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Cite
HOME_X,

А зачем вам собственный класс? Вы переходите абсолютно на другой класс, где гарантия что там та же логика?


Пытался на простом примере найти способ переопределить метод не объявленный ВИРТУАЛЬНЫМ
...
Рейтинг: 0 / 0
Как переопределить метод объекта virtual->override
    #39946092
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad F
HOME_X
пропущено...

Сравнение не понял !

Чего непонятного, - там тоже с самого начала было очевидно, что не залезает.
Вроде Virtual Student дал верный совет

Ну, дык, студент он и есть студент.)
Сейчас еще додумаю.
Давай-давай, - наблюдаем с интересом.))

"Сейчас еще додумаю" - имел в виду
сделать правильный арх-ру и взаимодействие объектов
Ан не получилось...
...
Рейтинг: 0 / 0
Как переопределить метод объекта virtual->override
    #39946093
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad F
HOME_X
пропущено...

Сравнение не понял !

Чего непонятного, - там тоже с самого начала было очевидно, что не залезает.
Вроде Virtual Student дал верный совет

Ну, дык, студент он и есть студент.)
Сейчас еще додумаю.
Давай-давай, - наблюдаем с интересом.))


"Сейчас еще додумаю" - имел в виду сделать правильную арх-ру и взаимодействие объектов
Ан не получилось ....
...
Рейтинг: 0 / 0
Как переопределить метод объекта virtual->override
    #39946094
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может еще соображений есть ...?
Не красивенько получается из за одной нелепости сколько кода дублировать
...
Рейтинг: 0 / 0
Как переопределить метод объекта virtual->override
    #39946101
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X,

Экстенсивный способ - это доставить JVCL, в составе которой взрослые дядьки поддерживают RxLib для всех современных версий Delphi.
...
Рейтинг: 0 / 0
Как переопределить метод объекта virtual->override
    #39946104
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как переопределить метод объекта virtual->override
    #39946259
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBr,

Возможно Вы правы - я слишком зациклился первичной темой, а решение может
быть более простым учитывая продвинутость объекта FDMemTable

Суть задачи - это управлять указателем на записи временной таблицы НЕ !!!! перемещая его физически
(это активизирует ряд событий за которыми нужно следить)
Т.е. ссылаться на строки таблицы как на массив имея ограничительное свойство RecordCount
Для этого декларировались и переопределялись функции

Код: pascal
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.
27.
28.
29.
30.
31.
32.
33.
34.
35.
// возвращалась набор полей пятой строки Table1.GetRows(5).FieldByName('F1').AsString
// здесь фиксируем индекс строки

function TFxIniTable.GetRows(Index: Integer): TFields;
begin
  if (Index>0)and(Index<=GetRecordCount)then FRowRecord:=Index else begin
    FRowRecord:=0;
    DatabaseErrorFmt(SRecordNumFound,[Index]);
  end;
  Result:=Fields;
end;

//Здесь фиксируем буфер по заданной строке используя функцию на манер события
function TFxIniTable.GetActiveRecBuf(var RecBuf: PChar): Boolean;
begin
  Result:=inherited GetActiveRecBuf(RecBuf);
  if Result and (FRowRecord>0) then begin
    FRowBuffer:=AllocRecordBuffer;
    Move(Records[FRowRecord-1].Data^,FRowBuffer^,GetRecordSize); -- перенос во временной буфер целой записи
    FRowRecord:=0;
    RecBuf:=FRowBuffer;
  end;
end;

//Здесь присваиваем фиксированный буфер в набор полей 
procedure TFxIniTable.SetFieldData(Field: TField; Buffer: Pointer);
var I: Integer;
begin
  I:=FRowRecord;
  inherited SetFieldData(Field,Buffer);
  if I>0 then begin
    SetMemoryRecordData(FRowBuffer,I-1);
    if I=RecNo then GetCurrentRecord(ActiveBuffer);
  end;
end;



Результат
for I:=0 to RecordCount do begin
Table1.GetRows(I).FieldByName('F1').AsString:='............';
end

Но физический указатель - не сменен .... и возвращает текущую запись

Спасибо
...
Рейтинг: 0 / 0
Как переопределить метод объекта virtual->override
    #39946269
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X,

Что-то похоже есть в методе FDMemTable1.GetRow
Т.е. параллельный доступ к набору записей, но мой способ
более универсальный
Только вот с Optional параметрами я не совсем понял - что можно передать ?
Номер строки ?
...
Рейтинг: 0 / 0
Как переопределить метод объекта virtual->override
    #39946277
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X
Т.е. ссылаться на строки таблицы как на массив имея ограничительное свойство RecordCount

Что же мешает загрузить данные в массив и не мучатся ?
Пусть наследник хранит и датасет и массив. А при Post/Delete корректирует одну строчку массива
...
Рейтинг: 0 / 0
Как переопределить метод объекта virtual->override
    #39946309
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBr
HOME_X
Т.е. ссылаться на строки таблицы как на массив имея ограничительное свойство RecordCount

Что же мешает загрузить данные в массив и не мучатся ?
Пусть наследник хранит и датасет и массив. А при Post/Delete корректирует одну строчку массива


Есть такие соображения, массив типа TFDDatSRow

А синхронизация ?
" Post/Delete " - еще Insert записи и изменение номеров всех последующих элементов массива
Тут вероятно управляющий массивом подкласс писать надо будет

Сейчас подсмотрю как RX компонент реализован ....
...
Рейтинг: 0 / 0
Как переопределить метод объекта virtual->override
    #39946333
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты бы определился, что тебе надо: то тебе синхронизация не нужна, то нужна. Попахивает...
...
Рейтинг: 0 / 0
Как переопределить метод объекта virtual->override
    #39946434
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X
" Post/Delete " - еще Insert записи и изменение номеров всех последующих элементов массива

Вы можете, например, хранить не матрицу, а список одномерных массивов
...
Рейтинг: 0 / 0
Как переопределить метод объекта virtual->override
    #39947416
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBr,

Есть просто - а есть очень просто
А если назвать вещь своим именем - НУ совсем просто
(ну мы же НЕ амер. пиндосы !!!!!!!!!)

Код: pascal
1.
2.
3.
4.
5.
procedure TForm1.Button3Click(Sender: TObject);
var I: Integer;
begin
  for I:=0 to FDMemTable1.GetRow.RowList.Count-1 do ShowMessage(String(FDMemTable1.GetRow.RowList.ItemsI[I].ValueS['F1'])+' '+IntToStr(FDMemTable1.GetRow.RowList.ItemsI[I].ValueS['F2']));
end;



Спасибо за участие и подсказки
...
Рейтинг: 0 / 0
13 сообщений из 38, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как переопределить метод объекта virtual->override
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]