Безобразия - 1. Я и Delphi.

Apr 15, 2008 01:46

Думала, у кого кривые руки - у меня или у разработчиков Дельфи. Как ни странно, оказалось, что у вторых. 1. С месяц назад я искала в списке математических функций Math для Delphi функцию ошибок erf. Что ее там не оказалось вообще, равно как и других статистических функций, либо они были, но только в кривом виде для статических массивов, так что ( Read more... )

безобразия, вопросы

Leave a comment

corsar_pawtet April 15 2008, 10:24:06 UTC
зачем такие трудности? При чём здесь вообще PChar?!!! Есть же динамические массивы. Например:

var V1 : array of Double;//вектор
var N : integer;//размерность вектора
...
begin
N=...;
....
SetLength(V1,N);//устанавливаем длину
...
V1[i]:=...;//задаём компоненты вектора
...
x:=Norm(V1);//функция нормы (для примера)
end;

А функция пишется например так:

function Norm(V : array of Double) : Double;
var i : integer;
begin
Result:=0;
for i:=0 to Length(V)-1 do //Length(V) - размерность вектора
Result:=Result+sqr(V[i]);
Result:=sqrt(Result);
end;

С матрицами тоже можно похожим образом работать. Если надо, подскажу.

Reply

sanyalal April 15 2008, 12:15:59 UTC
В том-то и дело, что PChar тут совершенно ни при чем.
А в динамических массивах длину надо определить до того, как к массиву обращаешься. У тебя цикл for, а у меня while, там длина сначала неизвестна.
Что-то вроде того, что мне надо, я то ли видела, то ли делала в си++

Reply

corsar_pawtet April 15 2008, 14:39:18 UTC
i:=0;
while i

Reply

asphyx_lj April 15 2008, 23:22:04 UTC
Это с каких пор в Паскале такое есть? o_O Или мне следовало раньше выйти из анабиоза? Что такое SetLength()? И, кстати, неужели и правда нельзя производить арифметические операции с указателями?

Reply

sanyalal April 15 2008, 23:31:27 UTC
SetLength() - задание длины динамического массива.

Reply

asphyx_lj April 15 2008, 23:47:26 UTC
Я понял :P Откуда он взялся? В Borland Pascal такого не было... Это что-то типа realloc?

Reply

corsar_pawtet April 16 2008, 12:47:38 UTC
Разговор о Дельфи, а не о классическом паскале. SetLength - устанавливает длину массива. Какие-то арифметические операции с указателями есть, но они тут не нужны

Reply


Leave a comment

Up