Итак вопрос: Есть необходимость прибавить к адресу переменной типа integer целое число, но при выполнении кода
begin
var a:=1;
var b:=@a;
b+=2;
end;
вылетает ошибка. Как быть?
Итак вопрос: Есть необходимость прибавить к адресу переменной типа integer целое число, но при выполнении кода
begin
var a:=1;
var b:=@a;
b+=2;
end;
вылетает ошибка. Как быть?
…Почитайте как работают ссылки в справке… Там ещё много таких моментов.
b^+=2
Присвоение ведётся переменной, на которую ссылается ссылка, а не самому адресу.
А, ну а зачем вам? Ну можно конечно…
begin
var a := 1;
var b := @a;
var i := integer(b);
i += 2;
b := PInteger(pointer(i));
end.
Но где такое может пригодится? Массивы хотите так делать как в C++?
Почти. Библиотека цветовых пространств ведь ещё в разработке!
“Мсье знает толк в извращениях!” (с)
Добрый день. Видимо, идёт речь о массиве и требуется переходить к следующему элементу? Должна быть другая операция для этого?
для этого используются динамические массивы
Ссылки мне нужны для оптимизации чтения/записи System.Drawing.Bitmap. То есть не через SetPixel/GetPixel, а напрямую в память. Разумеется, делать массивы через ссылки я не буду!
Посмотрите коды ABCObjects - там была работа с Bitmap напрямую
Если найдёте мне тоже скиньте номер строчки.
GraphABCHelper, 121
Посмотрю обязательно, хотя реализацию уже нашёл. Если кому интересно, приведу простой пример кода.
Код выглядит далеко не так жутко, как в C++. Скажу даже больше: он (код) вообще не похож на Сишный.