Delphi.int.ru — Портал программистов

Вход Регистрация | Забыли пароль?

События

Сегодня:
Вопросы0    Ответы0    Мини-форумы0


Последние:
Вопрос07.06, 13:56 / #6665
Ответ20.03, 23:25 / #6650
Новости30 апреля 2012


Сейчас онлайн:
На сайте — 14
На IRC-канале — 2

Ссылки

Описание функций и приёмы работы

Автоматическая подсветка кода

Автоматическая подсветка кода Все сообщения, отправляемые участниками на сайте, автоматически обрабатываются и могут показываться на страницах с некоторыми изменениями. Самой важной функцией при обработке сообщений является автоматическая подсветка кода. Подсветка - такое преобразование кода, при котором все его структурные элементы изменяют своё оформление, а общий вид фрагмента кода становится похожим на окно редактора, в котором он был написан. Подсветка существенно упрощает чтение кода.
Для того, чтобы фрагмент кода был автоматически обработан и подсвечен, следует обрамлять этот фрагмент сообщения специальным тегом <code>. Следует отметить, что использование тегов доступно не всем участникам, а только экспертам, получившим определённым статус. Подробнее узнать о статусах участников можно в разделе Статусы участников, а об основных элементах HTML - в разделе Базовые навыки HTML. Тег <code> является таким же HTML-тегом, как, например, <strong> или <a>, поэтому, если он будет использован в сообщении тем участником, у которого нет прав использовать HTML-разметку, тег будет отображён как обычный текст, а код, соответственно, останется неподсвеченным.
В системе для подсветки имеется поддержка различных языков программирования. Язык, на котором написан код, должен указываться автором сообщения. Делается это указанием дополнительного параметра "language" в самом теге <code>. Значением параметра должно являться название языка. Значение может быть заключено в кавычки, а может быть указано и без них. Рекомендуемый вариант - использовать кавычки. Регистр написания значения параметра (т.е. названия языка) не имеет значения; главное - чтобы это было одно из значений, указанных ниже. В результате шаблон тега следующий:
<code language="формат">
...
</code>

Однако параметр "language" не является обязательным: в качестве языка по умолчанию используется "Delphi", т.е. записи
<code language="Delphi">
и
<code>

являются полностью эквивалентными. Именно поэтому параметр language следует использовать только в тех случаях, когда код написан на языке, отличном от Delphi.

Участникам, которым использование HTML не доступно, следует использовать альтернативную конструкцию:

{{code}} ... {{/code}}

либо

{{code|формат}} ... {{/code}}

На данный момент имеется поддержка следующих языков программирования и форматов подсветки:

Язык программирования Добавлен Значение параметра "language" Тег <code> / {{code}} полностью Пример фрагмента кода
Delphi
27.09.2007
delphi
<code language=delphi>

{{code|delphi}}
var
    s: string; i: integer;
{...}
s:='Hello, world!';
Memo1.Lines.Clear;
for i:=1 to Length(s) do
    Memo1.Lines.Add(Copy(s,1,i));
Pascal
27.09.2007
pascal
<code language=pascal>

{{code|pascal}}
//Вывод квадратов чисел от 1 до 10
for i:=1 to 10 do
begin
    writeln(i,' - ',sqr(i));
end;
Assembler
27.09.2007
asm
<code language=asm>

{{code|asm}}
mov eax,X
add eax,Y
mov Result,eax
PHP
12.06.2009
php
<code language=php>

{{code|php}}
$path = 'info.txt';
$f = fopen($path,'r');
$data = fread($f,10);
fclose($f);
if ($data >= 5) print 'Ok'.
Perl
12.06.2009
perl
<code language=perl>

{{code|perl}}
for (my $i = 0; $i < @ary1; $i++) {
  for (my $j = 0; $j < @ary2; $j++) {
    if ($ary1[$i] > $ary2[$j]) {
      last; # can't go to outer :-(
    }
    $ary1[$i] += $ary2[$j];
  }
  # this is where that last takes me
}
JavaScript
12.06.2009
javascript
<code language=javascript>

{{code|javascript}}
var i = 0;
for (i = 0; i <= 5; i++)
{
  document.write("The number is " + i);
  document.write("<br />");
}

C

C++

C#

12.06.2009

c

cpp

csharp

<code language=c>

<code language=cpp>

<code language=csharp>

{{code|c}}

{{code|cpp}}

{{code|csharp}}

#include <iostream>    // declarations for I/O
 
int main()
{
    // for every character c with a value of 32 to 126
    for (unsigned char c=32; c<127; ++c) {
        // output value as number and as character:
        std::cout << "Value: " << static_cast<int>(c)
                  << " Character: " << c
                  << std::endl;
    }
}
Visual Basic / VBA 17.10.2009
vb

<code language=vb>

{{code|vb}}

TextBox2.ForeColor = &H80000012
If TextBox2 = "" Then Exit Sub
If TextBox2 = "-" Then Exit Sub
If TextBox2 = "--" Or TextBox2 = "---" Then TextBox2 = "-": Exit Sub
X = TextBox2 * 1
If X * 1 > 0 Then TextBox2.ForeColor = &HFF&
If X * 1 < 0 Then TextBox2.ForeColor = &HFF0000
End Sub
SQL 17.10.2009
sql

<code language=sql>

{{code|sql}}

INSERT INTO Multicust
SELECT * FROM Salespeople
WHERE 1 < (SELECT COUNT (*) FROM Customers WHERE Customers.snum = Salespeople.snum);
HTML 20.07.2010
html

<code language=html>

{{code|html}}

<html> 
<head> 
<title>Пример 1</title> 
</head> 
<body> 
<h1>Пример 1</h1>
<p>Это простейший пример HTML-документа.</p> 
</body>
</html>

Другие форматы могут быть добавлены со временем в зависимости от их востребованности участниками.

Добавление примечаний к вопросам

Добавление примечаний к вопросамНередко случается, что участник, задав вопрос, впоследствии обнаруживает, что указал недостаточно данных, забыл о чём-либо. А вопрос уже отправлен и доставлен всем экспертам. Как быть в этом случае? Для разрешения данной ситуации служит функция добавления примечания к вопросу.
Её суть заключается в следующем: автор вопроса может добавить примечания к своему вопросу, т.е. указать дополнительную информацию. Эта информация появится не только на странице вопроса, но и будет отправлена всем экспертам, получившим данный вопрос. Таким образом, участник может сообщить дополнительную информацию, не задавая нового вопроса.
Добавление примечаний возможно только для открытых вопросов. Для добавления примечания следует воспользоваться кнопкой Кнопка добавления примечания, расположенной на странице вопроса.

Как правильно задать вопрос?

Как правильно задать вопрос?Чем грамотнее задан вопрос, тем больше шансов получить на него ответ. Если вопрос будет малопонятным, вряд ли кто-то станет на него отвечать. Очень важно правильно оформить вопрос, чтобы его можно было без затруднений прочитать. Помимо основного поля для формулировки вопроса и исходных данных есть дополнительное поле - приложение. Не следует о нём забывать - во многих случаях оно просто необходимо. В это поле рекомендуется помещать блоки текста, которые косвенно относятся к самому вопросу. В частности, рекомендуется все фрагменты кода, приводимые в вопросе, помещать в приложение. Это существенно упростит чтение: сам вопрос отдельно и код тоже отдельно. Вот общие рекомендации:

  • Большие фрагменты кода или выдержки из каких-либо статей/книг рекомендуется помещать в приложение, а в тексте вопроса ссылаться на них;
  • В процессе ввода текста вопроса система автоматически сканирует вводимый текст и выдаёт рекомендации. Если текст вопроса довольно большой, то есть вероятность, что он содержит фрагменты кода. Также такая вероятность есть в случае, когда соотношение русских и латинских букв в тексте вопроса довольно ощутимо (ведь код состоит в основном из латинских букв). Если Вы увидели какую-либо рекомендацию, имеет смысл прислушаться. Но, конечно, это всего лишь общая оценка вопроса и она может не соответствовать действительности (см. следующий пункт);
  • Не задавайте вопрос транслитом (т.е. написанием русских букв английскими: "привет" -> "privet"), если есть возможность написать на русском. Если возможности нет, так уж и быть, пусть будет транслит, однако такой вопрос сложнее воспринимается. На транслит также появится рекомендация (см. предыдущий пункт) - в этом случае обращать на неё внимание не стоит (если, конечно, в текст не вставлен фрагмент кода).
  • Если к вопросу относится несколько фрагментов кода, то сделайте следующим образом: поместите все фрагменты в приложение, но отделите их друг от друга (несколькими пустыми строками или символьными разделителями - например "------------"), а также пронумеруйте. В самом вопросе просто ссылайтесь на номера фрагментов.

Стоит отметить и общие рекомендации, хотя они очевидны:

  • Старайтесь писать грамотно, не допуская ошибок. Грамотно написанный вопрос притягивает к себе внимание;
  • Излагайте мысли как можно более точно, старайтесь избегать "воды";
  • Не задавайте в рамках одного вопроса сразу несколько вопросов, особенно, если они касаются совершенно разных тематик - задайте каждый вопрос отдельно в соответствующий тематический раздел.