169 похожих чатов

А случайно нет ли в паскале штатной возможности передать указатель

и количество туда где array of в качестве аргумента?

25 ответов

115 просмотров
zamtmn- Автор вопроса

имею ввиду выполнение program project1; {$mode delphi}{$H+} uses gvector; type TTest2=TVector<integer>; TDummyArr=array[0..0]of integer; PTDummyArr=^TDummyArr; procedure WriteArgs(const Args:array of integer); var i:integer; begin for i:=low(args) to high(args) do writeln(args[i]); end; var arr:TTest2; begin arr:=TTest2.Create; arr.PushBack(1); arr.PushBack(2); arr.PushBack(3); arr.PushBack(4); WriteArgs(PTDummyArr(arr.Mutable[1])^[0..1]); readln; end. и подобного без "страшных" кастований

zamtmn
имею ввиду выполнение program project1; {$mode del...

не ответ на вопрос, но просто.. вчера в какой-то статье читал, возможно у GunSmoker'а, что array of Type на самом деле неявно передаётся как два параметра: указатель и размер

zamtmn
имею ввиду выполнение program project1; {$mode del...

А это вроде чисто FPC'шная фишка, такой [a..b] кусок передавать

zamtmn- Автор вопроса
notme
не ответ на вопрос, но просто.. вчера в какой-то с...

да. удобно передавать куски без копирования. но там где физического доступа к массиву нет - приходится выкручиваться. неплохо бы получить законный способ

zamtmn- Автор вопроса
notme
А это вроде чисто FPC'шная фишка, такой [a..b] ку...

хз. у дельфистов надо интересоваться

notme
не ответ на вопрос, но просто.. вчера в какой-то с...

Немного не так, там адрес буфера и индекс последнего элемента, но это CompilerMagic и руками такое провернуть будет сложновато

notme
не ответ на вопрос, но просто.. вчера в какой-то с...

array of x в параметре и тип array of x это 2 разные вещи

zamtmn- Автор вопроса
zamtmn
да, мы в курсе))

Я вот до вчерашнего дня не был в курсе )

zamtmn- Автор вопроса
notme
Я вот до вчерашнего дня не был в курсе )

но сегодня ты уже был в курсе))

Boris Usievich
array of x в параметре и тип array of x это 2 ра...

Ну а что Си++ думает по этому поводу? 😄 Есть чему тут повозмущаться? Типа что пишется одинаково, выглядит одинаково, но совершенно разное!

notme
Ну а что Си++ думает по этому поводу? 😄 Есть чему ...

ничего, в плюсах тип не зависит от того в параметрах он или нет

zamtmn- Автор вопроса
notme
Ну а что Си++ думает по этому поводу? 😄 Есть чему ...

нечему тут возмущаться. это отличная фича))

zamtmn- Автор вопроса
Boris Usievich
ничего, в плюсах тип не зависит от того в параметр...

а это не тип. это синтаксис переменного числа аргументов

Ну, я не пробовал такое ни разу

zamtmn
имею ввиду выполнение program project1; {$mode del...

https://www.freepascal.org/docs-html/rtl/system/slice.html

zamtmn- Автор вопроса
zamtmn- Автор вопроса
zamtmn
она скопирует

или нескопирует?

zamtmn
она скопирует

Смотрю по отладчику - копирования нету

zamtmn- Автор вопроса
notme
Смотрю по отладчику - копирования нету

program project1; {$mode delphi}{$H+} uses gvector; type TTest2=TVector<integer>; TDummyArr=array[0..0]of integer; PTDummyArr=^TDummyArr; procedure WriteArgs(const Args:array of integer); var i:integer; begin for i:=low(args) to high(args) do writeln(args[i]); end; var arr:TTest2; begin arr:=TTest2.Create; arr.PushBack(1); arr.PushBack(2); arr.PushBack(3); arr.PushBack(4); WriteArgs(PTDummyArr(arr.Mutable[1])^[0..1]); WriteArgs(slice(PTDummyArr(arr.Mutable[1])^,2));//так работает WriteArgs(slice(PInteger(arr.Mutable[1]),2));//а хочется так(( readln; end.

zamtmn
program project1; {$mode delphi}{$H+} uses gvect...

Идею понял, тут немного не то, но руками хоть не надо тип создавать: WriteArgs(slice(PIntegerArray(arr.Mutable[1])^,2));

notme
Идею понял, тут немного не то, но руками хоть не н...

В Generic интересно получится обернуть - универсальный массив создать?

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта