|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Ошибочный перевод из AnsiString в PAnsiChar
Почему-то глючит перевод из 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); — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#3
|
|||
|
|||
Попробовал так:
SetString(s, str, Length(str)); вместо s:=AnsiString(Str); Ничего не дало Визуально строки полностью идентичны. Что там может быть.... |
#4
|
||||
|
||||
Как-то я не вижу смысла в этой функции.
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#5
|
|||
|
|||
Ну пока смысла действительно нет , позднее вставиться строка:
Код:
s := StringReplace(s, '<strong>', '/strong/', [rfReplaceAll]); Проблема в том, что глючит даже если никаких изменений в строке не делается |
#6
|
||||
|
||||
AnsiString прямо приводить к PAnsiChar можно, т.к. AnsiString - это тот же PAnsiChar, только еще перед самой строкой записана длина строки и еще немного всякой фигни. А вот обратно - не уверен, что делфи сама додумается вызвать конвертер в этом случае и дописать к PAnsiChar служебную информацию.
jmp $ ; Happy End! The Cake Is A Lie. |
#7
|
||||
|
||||
Цитата:
Не стоит путать форумы с богадельнями. © Bargest |
#8
|
|||
|
|||
Есть функция strPas, если ничего не путаю. Вот она из PChar делает String.
|
#9
|
||||
|
||||
Цитата:
Цитата:
Не стоит путать форумы с богадельнями. © Bargest |