Форум: "Начинающим";
Текущий архив: 2008.02.24;
Скачать: [xml.tar.bz2];
ВнизДинамические массивы Найти похожие ветки
← →
Алексей © (2008-01-28 22:31) [0]Вопрос состоит в следующем:
текст программы по сути такой:
Unit1;
interface
type
PArray = ^TArray;
TArray = array of Cardinal;
var
A: TArray;
procedure GetA(Param: Pointer); {передать TArray}
var
PA: PArray;
begin
A[0]:= 10;
PA:= @A;
Param:= PA;
end;
end;
Unit2;
Interface
Uses
Unit1;
procedure Test;
var
A: TArray;
PA: PArray;
begin
GetA(PA);
A:= PA^;
end;
не работает.
почему не помню? Очень попрошу помочь.
← →
DVM © (2008-01-28 22:36) [1]
> не работает.
Оно прямо так и говорит "Не работаю" ?
← →
Семеныч (2008-01-28 22:46) [2]1. PArray и всю работу с указателями выбросьте. Динамический массив - сам по себе уже указатель. См. справку.
2. Перед использованием динамического массива ему надо назначить длину. См. SetLength.
3. procedure GetA(var Param: Pointer);
Иначе присвоение Param:= PA не имеет никакого смысла. Изучите передачу параметров по ссылке и по значению.
Хотя процедура GetA не нужна совсем.
← →
DVM © (2008-01-28 22:48) [3]
> Семеныч
И это еще не все. А автору вопроса надо хоть чуть чуть думать головой начать самому.
← →
{RASkov} © (2008-01-28 22:51) [4]> [0] Алексей © (28.01.08 22:31)
А можно вопрос:
Для чего вообще указатели в данном примере нужны?
В процедуру GetA можно переделать вот так:procedure GetA;
begin
A[0]:= 10;
end;
Ну и соответственно Test будет вот таким:procedure Test;
begin
GetA;
//У нас теперь есть А, т.е. Unit1.A;
end;
Вообщем вопрос с примером не понятные :(
← →
DVM © (2008-01-28 22:53) [5]
> {RASkov} ©
Это какое то задание типа исправь все ошибки.
← →
{RASkov} © (2008-01-28 22:55) [6]> В процедуру GetA можно переделать вот так:
> procedure GetA;
> begin
> A[0]:= 10;
> end;
Не учел
> TArray = array of Cardinal;
>
> var
> A: TArray;
Т.е. процедуру GetA можно переделать вот так:procedure GetA;
begin
SetLength(A, 1);
A[0]:= 10;
end;
Глупо конечно это все, но пример в [0] без комментариев автора еще глупее кажется :(
← →
{RASkov} © (2008-01-28 22:57) [7]> [5] DVM © (28.01.08 22:53)
Ну может автор все таки расскажет, что же именно он задумал :)
А вообще... похоже (
← →
Алексей © (2008-01-28 23:36) [8]есть функция GetBitmapBits(Bitmap: HBitmap; Size: Cardinal; Bits: Pointer):...,
где передаются PIntegerArray. Для себя у меня была функция работающая по аналогичному принципу, но я все убил... Как это работает не помню. Попрошу помочь.
← →
DVM © (2008-01-28 23:38) [9]
> Алексей ©
The GetBitmapBits function is not implemented in the Win32 API.
Это ничего что так?
← →
DVM © (2008-01-28 23:43) [10]
> Для себя у меня была функция работающая по аналогичному
> принципу
Возьми GetDIBits не мучайся.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.02.24;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.043 c