![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Есть такой код:
Код:
var
RetLen: Integer;
P: PChar;
...
Result := TMemoryStream.Create;
P := GetMemory(256);
RetLen := FSocket.ReceiveBuf(P^, 256);
while RetLen > 0 do
begin
P := PChar ( StringReplace(P, 'gzip,deflate', ' ', [rfIgnoreCase] ) );
P := PChar ( StringReplace(P, '1.1', '1.0', [rfIgnoreCase] ) );
Result.Write(P^, RetLen);
RetLen := FSocket.ReceiveBuf(P^, 256);
end;
P := '';
FreeMemory(P);
Result.Position := 0;Стоит задача подменить пару строк в переменной P. Лезу внаглую стринг реплейсом, естественно стоит мат на весь компилятор, acces violation'ы вылетают на строке FreeMemory(P) и на самих реплейсах. Подскажите пожалуйста, как корректно реплейснуть строку в моем случае СпасибоПоследний раз редактировалось WennY, 05.09.2011 в 04:43. |
|
#2
|
||||
|
||||
|
Код:
var p, q: PChar; begin p:=GetMemory($100); StrPCopy(p, 'hillo warld'); // вместо ReceiveBuf q:=PChar(StringReplace(p, 'wa', 'wo', [rfReplaceAll, rfIgnoreCase])); q:=PChar(StringReplace(q, 'hi', 'he', [rfReplaceAll, rfIgnoreCase])); MessageBox(Handle, q, p, MB_OK); // вместо Write FreeMemory(p); end; |