Мой Паскаль InsertsionSort массива строк не работает правильно

Я видел несколько вопросов о вставке сортировки с помощью Паскаля. Поэтому я подумал, что попробую это с массивом строк.

Текстовые значения:

Advanced IF Syntax 
Advanced LOOP Syntax 
ALIGN 
BANNER / NOBANNER 
BLANK 
COLOR / COLOUR 
CONG_MEET_TIME 
DATE 
ENDPAGE 
EOL 
FIELD 
FONT 
HIGHLIGHT / NOHIGHLIGHT 
IF 
IMAGE 
INCLUDE 
LINESPACING 
LOOKUP_FIELD 
LOOP 
LOOP AS 
LOOP SQL 
PARAGRAPH / TEXT 
REQUIRES 
Script Command Syntax 
SEPARATOR 
TAB 
TAB SET 
TALK_THEME 

Вот код:

Procedure InsertionSort(aTopics : Array of String; size : Integer);
Var
    i, j : Integer;
    caption, topic_id : String;

Begin
    For i := 2 to size-1 do
    Begin
        topic_id := aTopics[i];
        caption := HndTopics.GetTopicCaption(aTopics[i]);

        j := i;
        While ((j > 1) AND (CompareText(HndTopics.GetTopicCaption(aTopics[j-1]), caption) > 0)) do
        Begin
            aTopics[j] := aTopics[j-1];
            j := j - 1;
        End;
        aTopics[j] := topic_id;
    End;
End;

Кажется, работает на 99% правильно, с одним исключением. Перейдите к справочной документации и нажмите на вкладку " Указатель ". Нажмите на пункт " Синтаксис команды пользовательских сценариев", и появится всплывающее окно:

Почему первый элемент TALK_THEME? Это должно быть в конце списка, а не в начале.

1 ответ

успешно протестировано с помощью HelpNDoc 8.0.0.187 с/в редакторе сценариев ...

      // ------------------------------------------------------------
// @brief This piece of code create a TStringList,
//        add some text line (animal - items) to the list,
//        sort the list, and
//        display the sored list in a message box on screen.
// ------------------------------------------------------------
procedure sortTest;
var sortedList: TStringList;
begin
  // create instance of TStringList
  sortedList := TStringList.Create;
  try
    // add text (items) line per line:
    // (same as: sortedList.Add('animal');
    sortedList.Text :=
    'Zebra'   + #10 + 'Monkey' + #10 +
    'Hamster' + #10 + 'Lion'   + #10 + 'Cat';
    
    sortedList.Add('Mouse');
    sortedList.Add('Dog');
    
    sortedList.sort;   // sort the items in list
    
    // display sorted list
    ShowMessage(sortedList.Text);
  finally
    sortedList.Clear;  // clear the list (items)
    sortedList.Free;   // free allocated memory
  end;  
end;

// global scope/entry point
begin
  sortTest;
end.
Другие вопросы по тегам