Мой Паскаль 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.