![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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; |
|
#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 |