![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Почему-то глючит перевод из PAnsiChar в AnsiString и обратно в PAnsiChar. Делаю так:
Код:
function ReplaceInnerComm(str: PAnsiChar): PAnsiChar;
var S : AnsiString;
ac : PAnsiChar;
begin
s:=AnsiString(Str);
ac:= PAnsiChar(s);
Result:=ac;
end;Вызов по телу программы: FBuffer:=ReplaceInnerComm(FBuffer); Компилятор ошибок не выдает, но вот в процессе исполнения программы ошибки начинают сыпаться. Если же в последней строчке функции поставить Result:=str; (то есть без перевода в AnsiString и обратно), то далее программа работает нормально. Может кто сталкивался с такими глюками и знает как это обойти? Последний раз редактировалось BorodaOleg, 23.05.2014 в 14:54. |
|
#2
|
||||
|
||||
|
Есть какая-то ф-я типа StrSet, в нее передается пчар, а на выходе строка.
procedure _SetString(s: _PShortStr; buffer: _PAnsiChr; len: Byte); |
|
#3
|
|||
|
|||
|
Попробовал так:
SetString(s, str, Length(str)); вместо s:=AnsiString(Str); Ничего не дало Визуально строки полностью идентичны. Что там может быть.... ![]() |
|
#4
|
||||
|
||||
|
Как-то я не вижу смысла в этой функции.
|
|
#5
|
|||
|
|||
|
Ну пока смысла действительно нет
, позднее вставиться строка:Код:
s := StringReplace(s, '<strong>', '/strong/', [rfReplaceAll]); Проблема в том, что глючит даже если никаких изменений в строке не делается ![]() |
|
#6
|
||||
|
||||
|
AnsiString прямо приводить к PAnsiChar можно, т.к. AnsiString - это тот же PAnsiChar, только еще перед самой строкой записана длина строки и еще немного всякой фигни. А вот обратно - не уверен, что делфи сама додумается вызвать конвертер в этом случае и дописать к PAnsiChar служебную информацию.
|
|
#7
|
||||
|
||||
|
Цитата:
|
|
#8
|
|||
|
|||
|
Есть функция strPas, если ничего не путаю. Вот она из PChar делает String.
|
|
#9
|
||||
|
||||
|
Цитата:
Цитата:
|