| 
| 
 | Вопрос # 931/ вопрос открыт / | 
 |  Здравствуйте! Недавно просматривал код парсера SimpleXML и наткнулся на немного странный кусок кода (в прилож.). Подскажите, что означает запись: "^M^J" и можно ли ее записать как-нибудь по проще? Приложение:Переключить в обычный режим ...function EnumAttrValue(aNode: TXmlNode; anAttrData: PXmlAttrData;	const aValues: array of TXmlString): Integer;var	anAttrValue: TXmlString;	s: String;	i: Integer;begin	anAttrValue := anAttrData.Value;	for Result := 0 to Length(aValues) - 1 do		if AnsiCompareText(anAttrValue, aValues[Result]) = 0 then			Exit;	if Length(aValues) = 0 then		s := ''	else begin		s := aValues[0];		for i := 1 to Length(aValues) - 1 do			s := s + ^M^J + aValues[i];	end;	raise Exception.CreateFmt(  		'%s', [aNode.FNames.GetName(anAttrData.NameID), aNode.Get_NodeName, s]);end;...
|  |   Вопрос задал: SMaks (статус: 1-ый класс)Вопрос отправлен: 21 сентября 2007, 00:47
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Вадим К Здравствуйте, SMaks!Сколько раз людям говорю: "Учите матчасть." В старых книгах часто пишут интересные вещи.
 То, на что вы наткнулись - совершенно законное свойство языка, известрое с древних времён языка Паскаль
 Если говорить по простому, то ^M - это символ (можно себе представить, что это константа такая) и равна она #13 (тоесть символ с кодом 13). что бы найти соответсвие, просто выписываем латынский алфавит. буковка A - 1, B -2 и так до Z = 26.
 Это чем то похоже на сишные \n \t \b. даже буквы совпадают
 
 а теперь по коду. Конструкция
 s := s + ^M^J + aValues[i];
 эквивалентна
 s := s + #13+#10 + aValues[i];
 или
 s := s + #13#10 + aValues[i];
 или
 s := s + chr(13) + chr(10) + aValues[i];
 и всё для того, что бы вставить перевод строки...
 по поводу эффективности все приведённые варианты эквивалентны.
 
|  | Ответ отправил: Вадим К (статус: Академик)Время отправки: 21 сентября 2007, 01:18
 Оценка за ответ: 5
 Комментарий к оценке: Спасибо. |  
 Мини-форум вопросаМини-форум пуст. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |