我真的需要帮助Delphi ...文本文件和排序数组?

时间:2010-05-18 21:06:25

标签: delphi

我已经将一个文本文件(名称)读入数组,我需要如何将这些名称按字母顺序排序并在丰富的编辑中显示?

请从这一点开始给我代码:

readln(MYFILE,ARR [I]);

'myfile'是文本文件,'arr'是字符串数组。 此外,我已将'i'声明为整数,即使它是一个字符串数组。那可以吗?

3 个答案:

答案 0 :(得分:7)

使用TStringList而不是数组,并将Sort属性设置为true。

var
  sortlist : TStringList;            // Define our string list variable
begin
  // Define a string list object, and point our variable at it
  sortlist := TStringList.Create;
  try
    // Now add some names to our list
    sortlist.Sorted := True;

    // And now find Brian's age
    sortlist.LoadFromFile(myfile);

    // Do something.
  finally    
    // Free up the list object
    sortlist.Free;
  end;
end;

答案 1 :(得分:3)

使用StringList然后很容易。 StringList也可以自动排序。 在这里查看示例(向下滚动): http://www.delphibasics.co.uk/Article.asp?Name=Files

答案 2 :(得分:2)

对不起。我忍不住了......

program BubblesortTextFile;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const
  MAX = 100;
  FILE_NAME = 'C:\Text.txt';

type
  TMyRange = 0..MAX;

var
  i,j,top: TMyRange;
  a: Array[TMyRange] of String;
  f: TextFile;
  tmp: String;
begin
  //Init
  i := 0;

  //Read all items from file
  Assign(f, FILE_NAME);
  Reset(f);

  while not Eof(f) do
  begin
    ReadLn(f, a[i]);
    Inc(i);
  end;
  Close(f);
  top := i-1;

  //Bubble sort  (Never use this in real life...)
  for i := Low(TMyRange) to top-1 do
    for j := i+1 to top do
      if a[j] < a[i]
      then begin
        tmp  := a[i];
        a[i] := a[j];
        a[j] := tmp;
      end;

  //Print the array
  for i := 0 to top do
   WriteLn(a[i]);

  //Wait for user
  ReadLn;
end.

如果你是新手:Welcome, and good luck with Delphi.
如果您正在开展一个认真的项目:Get help...