Code:

function ArrayToStr(str: TStrings; r: string): string;

var

i: integer;

begin

Result:='';

if str = nilthen

Exit;

for i := 0to Str.Count-1do

Result := Result + Str.Strings[i] + r;

end;

В следущем примере  результате должен получится файл c:\test.txt такого содержания: 123456789

поскольку числа с 49 до 51 являются ASCII-кодами этих чисел, а соответственно и являются их символьным представлением.

Code:

//Some Array-functions like in PHP.

 type

 ArrOfStr = arrayofstring;

 implementation

 function explode(sPart, sInput: string): ArrOfStr;

begin

Code:

Procedure AssignFixedString( Var FixedStr: Arrayof Char; Const S: String

);

Var

maxlen: Integer;

Begin

maxlen := Succ( High( FixedStr ) - Low( FixedStr ));

FillChar( FixedStr, maxlen, ' ' ); { blank fixed string }

If Length(S) > maxlen Then

Move( S[1], FixedStr, maxlen )

Else

Move( S[1], FixedStr, Length(S));

End;

 

 

Code:

procedure TForm1.Button1Click(Sender: TObject);

var

DataField: TStrings;

begin

DataField := TStringList.Create;

DataField.Add(Format('%s=%s', ['Jonas', '15.03.1980']));

ShowMessage(DataField.Values['Jonas'])

// will print the Birthday of Jonas

DataField.Free;

end;

http://delphiworld.narod.r

DelphiWorld 6.0

ДляпреобразованияTMemoryStreamвarray of Byteможноиспользоватьследующийкод:

Code:

procedure TForm1.Button1Click(Sender: TObject);

{©Drkb v.3(2007): www.drkb.ru}

var

M: TMemoryStream;

Buff: arrayof Byte;

begin

M := TMemoryStream.Create;

try

M.LoadFromFile('c:\test.htm');

SetLength(Buff, M.Size);

M.Position := 0;

M.Read(Buff[0], M.Size);

finally

M.Free;

end;

end;

 

 

 

Code:

type RecType = integer; {<-- здесь задается тип элементов массива}

 

const MaxRecItem = 65520div sizeof(RecType);

 

type = MyArrayType = array[0..MaxRecItem] of RecType;

type = MyArrayTypePtr = ^MyArrayType;

 

var MyArray: MyArrayTypePtr;

begin

ItemCnt := 10; {количество элементов массива, которые необходимо распределить}

GetMem(MyArray, ItemCnt * sizeof(MyArray[1])); {распределение массива}

MyArray^[3] := 10; {доступ к массиву}

FreeMem(MyArray, ItemCnt * sizeof(MyArray[1])); {освобождаем массив после работы с ним}

end;

 

Michael Day

 

Взято из Советов по Delphi от Валентина Озерова

Сборник Kuliba

 

Скажем, ваша структура данных выглядит следующим образом: 

Code:

type

TMyRec = record

SomeField: Integer;

SomeOtherField: Double;

TheRest: array[0..99] of Single;

end;

 

Представим, что данные находятся в массиве: 

Code:

TestArray : array[0..127, 0..127] of Byte;

 

Code:

procedure TForm1.Button1Click(Sender: TObject);

type

T2DIntArray = arrayofarrayof Integer;

var

DynArray: T2DIntArray;

V: Variant;

i, k: Integer;

begin

V := VarArrayCreate([0, 1, 0, 1], varInteger);

V[0, 0] := 00;

V[0, 1] := 01;

V[1, 0] := 10;

V[1, 1] := 11;

DynArrayFromVariant(Pointer(Dynarray), V, TypeInfo(T2DIntArray));

for i := 0to High(Dynarray) do

for k := 0to High(Dynarray[i]) do

memo1.Lines.add(IntToStr(DynArray[i, k]));

end;

 

{

The problem with DynArrayFromVariant is that you can only use it on

variant arrays with 0-based indexes, trying to use it on an array with 1

as lower bound blows up. Since the documentation is silent on that i

would consider it a bug.

}

 

Code:

//к примеру опишем свой тип

type

 MyType = record

   zap1: longword;

   zap2: char;

   zap3: string[10];

end;

 //опишем НЕОГРАНИЧЕННЫЙ массив переменный типа MyType

//хотя, может использоваться абсолютно любой

var

m: arrayof MyType;

 ....

 procedure TForm1.Button1Click(Sender: TObject);

var i: byte;

begin

for i := 0to9do// нумерация элементов начинается с нуля!

    begin

     SetLength(m, Length(m) + 1); // увеличение длины массива на 1

     m[i].zap1 := i; //  присвоение

     m[i].zap2 := chr(i); //          полям

     m[i].zap3 := inttostr(i); //              значений

   end;

end;

 ....

 SetLength(m, 0); // освобождение памяти

end.

 C Уважением,

Сергей Дьяченко, sd arzamas.nnov.ru

Взято из Советов по Delphi от