|
Вопрос # 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
Комментарий к оценке: Спасибо.
|
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|