Форум: "Начинающим";
Текущий архив: 2007.09.09;
Скачать: [xml.tar.bz2];
ВнизPWideChar Найти похожие ветки
← →
balepa © (2007-08-14 14:15) [0]Чё то не могу сообразить как заполнить такой массив в цикле:
ii: array [1..127] of PWIDECHAR;
Надо:
for i:= 1 to 127 do ii[i]:= "T00"+IntToStr(i);
← →
AZIZE © (2007-08-14 14:18) [1]
> for i:= 1 to 127 do ii[i]:= "T00"+IntToStr(i);
за такое голову надо отрвать (я имею ввиду имена переменных)
← →
Сергей М. © (2007-08-14 14:19) [2]За каким лешим тебе массив указателей ?
← →
balepa © (2007-08-14 14:58) [3]
> AZIZE © (14.08.07 14:18) [1]
>
> > for i:= 1 to 127 do ii[i]:= "T00"+IntToStr(i);
>
> за такое голову надо отрвать (я имею ввиду имена переменных)
Это пример реальные другие.
> Сергей М. © (14.08.07 14:19) [2]OPCITEMDEF = record
szAccessPath: POleStr;
szItemID: POleStr;
bActive: BOOL;
hClient: OPCHANDLE;
dwBlobSize: DWORD;
pBlob: PByteArray;
vtRequestedDataType: TVarType;
wReserved: Word;
end;
POPCITEMDEF = ^OPCITEMDEF;
OPCITEMDEFARRAY = array[0..65535] of OPCITEMDEF;
POPCITEMDEFARRAY = ^OPCITEMDEFARRAY;
function AddItems(
dwCount: DWORD;
pItemArray: POPCITEMDEFARRAY;
out ppAddResults: POPCITEMRESULTARRAY;
out ppErrors: PResultList): HResult; stdcall;
OPC требует этого.
← →
Плохиш © (2007-08-14 15:13) [4]Вообще-то в приведённом коде описан указатель на массив записей, а не массив указателей.
← →
Сергей М. © (2007-08-14 15:23) [5]
> balepa © (14.08.07 14:58) [3]
> OPC требует этого
> POPCITEMDEFARRAY
Приведи дословно оную декларацию..
Или см. Плохиш © (14.08.07 15:13) [4]
← →
balepa © (2007-08-14 17:53) [6]OPCITEMDEFARRAY = array[0..65535] of OPCITEMDEF;
> Плохиш © (14.08.07 15:13) [4]
> Вообще-то в приведённом коде описан указатель на массив
> записей, а не массив указателей.
А в этой записи есть szItemID: POleStr; (специально же выделил) вот с заполнением его и возникли проблемы.
В итоге должно получиться следующее;
for i:= 0 to 126 do begin
case i of
0..8: ItemDef[i].szItemID:= "Т00"+IntToStr(i+1);
9..98: ItemDef[i].szItemID:= "Т0"+IntToStr(i+1);
99..126: ItemDef[i].szItemID:= "Т"+IntToStr(i+1);
end;
<Здесь заполняем остальные поля ItemDef>
end;
← →
Lacmus © (2007-08-14 18:25) [7]
{ WideStrUtils.pas }
function WStrNew(const Str: PWideChar): PWideChar;
procedure WStrDispose(Str: PWideChar);
← →
balepa © (2007-08-14 18:28) [8]
> Lacmus © (14.08.07 18:25) [7]
>
>
> { WideStrUtils.pas }
>
> function WStrNew(const Str: PWideChar): PWideChar;
> procedure WStrDispose(Str: PWideChar);
Попробую...
← →
balepa © (2007-08-14 18:36) [9]Что-то не найду WideStrUtils.pas
И в принципе выделить память под них можно и без WStrNew(если они для этого),
а при s:= "T00"; (s:PWideChar) она выделяется сама, или нет...
← →
Lacmus © (2007-08-14 18:47) [10]
function WStrLen(const Str: PWideChar): Cardinal;
var
P : PWideChar;
begin
P := Str;
while (P^ <> #0) do Inc(P);
Result := (P - Str);
end;
function WStrAlloc(Size: Cardinal): PWideChar;
begin
Size := Size * Sizeof(WideChar);
Inc(Size, SizeOf(Cardinal));
GetMem(Result, Size);
Cardinal(Pointer(Result)^) := Size;
Inc(PChar(Result), SizeOf(Cardinal));
end;
function WStrMove(Dest: PWideChar; const Source: PWideChar; Count: Cardinal): PWideChar;
begin
Result := Dest;
Move(Source^, Dest^, Count * Sizeof(WideChar));
end;
function WStrNew(const Str: PWideChar): PWideChar;
var
Size: Cardinal;
begin
if Str = nil then Result := nil else
begin
Size := WStrLen(Str) + 1;
Result := WStrMove(WStrAlloc(Size), Str, Size);
end;
end;
procedure WStrDispose(Str: PWideChar);
begin
if Str <> nil then
begin
Dec(PChar(Str), SizeOf(Cardinal));
FreeMem(Str, Cardinal(Pointer(Str)^));
end;
end;
>она выделяется сама, или нет...
Выделяется, но не для всех 126 элементов
← →
Lacmus © (2007-08-14 18:58) [11]Ошибся
ItemDef[i].szItemID:= "Т00"+IntToStr(i+1);
даже не компилируется
← →
balepa © (2007-08-15 07:44) [12]
> Lacmus © (14.08.07 18:58) [11]
> Ошибся
>
> ItemDef[i].szItemID:= "Т00"+IntToStr(i+1);
>
> даже не компилируется
Так никто и неговорил что будет ;)
← →
balepa © (2007-08-15 09:21) [13]Премного лагодарен Lacmus
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.09.09;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.049 c