Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.46 MB
Время: 0.039 c
15-1201017444
sauron
2008-01-22 18:57
2008.02.24
BIOS?


4-1183721054
shamanski
2007-07-06 15:24
2008.02.24
Часы реального времени (RTC Alarm)


15-1201102321
OSokin
2008-01-23 18:32
2008.02.24
Исходники декомпилятора


2-1201504233
abhtr
2008-01-28 10:10
2008.02.24
Symbol FileGetAttr is specific to a platform


15-1200928515
smartleds
2008-01-21 18:15
2008.02.24
Коллеги подскажите как WinAmp к Delphi прикруттить





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский