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

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

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

25 ответов

119 просмотров
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 интересно получится обернуть - универсальный массив создать?

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
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
Карта сайта