|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
передача массива в функцию по ссылке
Здравствуйте!
передаю массив в функцию func1 по ссылке, а передается пустой массив, и при попытке обращения к нему в func1 ошибка доступа. подскажите, пожалуйста, что я делаю неправильно? Код:
type TarrInt = array of Integer; ParrInt = ^TarrInt; implementation function func1(parr: ParrInt): Boolean; begin // обращение к parr^ вызывает ошибку доступа end; function func2(arr: array of Integer): Boolean; begin func1(@arr); //... end; |
#2
|
||||
|
||||
Код:
type PIntArray = ^TIntArray; TIntArray = array of Integer; function Sum(arr: Pointer; Size: Integer): Integer; var i: Integer; begin Result := 0; if Size = 0 then Exit; for i := 0 to Size - 1 do Inc(Result, PIntArray(arr)^[i]); end; procedure TForm1.Button1Click(Sender: TObject); var a: TIntArray; i: Integer; begin SetLength(a, 5); for i := 0 to 4 do a[i] := i; ShowMessage(IntToStr(Sum(@a, 2))); // сумма 2х элементов ShowMessage(IntToStr(Sum(@a, 4))); // сумма 4х ShowMessage(IntToStr(Sum(@a, 5))); // сумма 5ти end; Грамотно поставленный вопрос содержит не менее 50% ответа. Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть. |
#3
|
||||
|
||||
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type ParrayofInteger = ^TarrayofInteger; TarrayofInteger = array of Integer; TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} function sum(a: ParrayofInteger): Integer; var i: Integer; begin Result:=0; for i:=Low(a^) to High(a^) do Inc(Result, a^[i]); end; procedure TForm1.FormCreate(Sender: TObject); var a: TarrayofInteger; begin SetLength(a, 3); a[0]:=100; a[1]:=200; a[2]:=300; ShowMessage(IntToStr(sum(@a))); end; end. Пишу программы за еду. __________________ |
#4
|
|||
|
|||
Спасибо за ответы всем! Так и сделал!
вот так работает: Код:
type TarrayofInteger = array of Integer; ParrayofInteger = ^TarrayofInteger; implementation function func1(parr: ParrayofInteger): Boolean; begin //... end; function func2(arr: TarrayofInteger): Boolean; begin func1(@arr); //... end; что Код:
:array of Integer это то же самое, на что ссылается Код:
: ParrayofInteger |