Вниз
Скачать: CL | DM;

Как обойтись без StrLCat ?   Найти похожие ветки 

 
Fanny   (2005-08-22 11:04) [0]

procedure MyProc(a:string);
var
 b:string;
begin
 // надо переменной B присвоить сегмент переменной A (такой же длины как у B)
end;

можно ли вообще обойтись без "выдёргивания" процедуры из SysUtils ???


 
Leonid Troyanovsky ©   (2005-08-22 11:10) [1]


> Fanny   (22.08.05 11:04)  

>  // надо переменной B присвоить сегмент переменной A (такой
> же длины как у B)


SetString? Copy? Move?

--
Regards, LVT.


 
Вжжжик   (2005-08-22 11:55) [2]

почему не сделать


 B:=A; ?


а если сегмент, то


 B:=Copy(A, 2, 5);


а если все-таки хочется через копирование памяти то:


 var
   P : Pointer;
 
 // место под сегмент строки А выделяем в строке В
 // раз сегмент "такой же длины" и строка В гарантированно
 // имеет правильную длину, то ниче выделять не надо,
 // эту строку можно пропустить
 SetLength(B, {длина сегмента} 5);
 // делаем отступ от начала строки А
 P:=Pointer(DWORD(Pointer(A)) + 2 {начало сегмента в строке А});
 CopyMemory(Pointer(B), P, 5 {длина сегмента});



 
Leonid Troyanovsky ©   (2005-08-22 11:58) [3]


> Вжжжик   (22.08.05 11:55) [2]

>  CopyMemory(Pointer(B), P, 5 {длина сегмента});


Move.

--
Regards, LVT.


 
Fanny   (2005-08-22 12:13) [4]

то есть
B := Copy(A,0,Length(A))
должно работать ?

а есть разница между Length(A) и SizeOf(A) ?


 
jack128 ©   (2005-08-22 13:02) [5]

Fanny   (22.08.05 12:13) [4]
а есть разница между Length(A) и SizeOf(A) ?

есть. А - суть указатель, размер его - 4 байта. Length(A) - это длина строки.


 
Игорь Шевченко ©   (2005-08-22 13:06) [6]


> B := Copy(A,0,Length(A))
> должно работать ?


Строки вообще-то с первого символа начинаются, а не с нулевого.


 
Fanny   (2005-08-22 15:18) [7]

всем спасибо



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.037 c
3-1126791472
Term
2005-09-15 17:37
2005.10.23
Народ нужно fibplus для 6-й делфи


2-1127233243
KLAUS
2005-09-20 20:20
2005.10.23
Проблема с отправление почты!


2-1127813315
ABS
2005-09-27 13:28
2005.10.23
ADO


6-1120661373
yurikon
2005-07-06 18:49
2005.10.23
Что за ошибка?


14-1127416528
Piter
2005-09-22 23:15
2005.10.23
Возможно, кому-то поднимет настроение :)




   Наверх