線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1318
推到 Plurk!
推到 Facebook!

排序

尚未結案
sundy6719
初階會員


發表:136
回覆:78
積分:42
註冊:2002-07-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-06-16 16:23:58 IP:211.74.xxx.xxx 未訂閱
在c 和vb都有排序設計可是在delphi我不知要如何使用找到的文章也都是c 在delphi要如何使用.....
mine
中階會員


發表:28
回覆:129
積分:56
註冊:2004-03-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-06-17 01:53:37 IP:218.175.xxx.xxx 未訂閱
你指的應該是資料庫查詢結果的排序吧 你可以參考 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=30526 Justmade大大的作品 或者是透過SQL完成 -------------------------------- 搞不懂!搞不懂!!永遠都搞不懂!!
sundy6719
初階會員


發表:136
回覆:78
積分:42
註冊:2002-07-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-06-17 10:08:21 IP:211.74.xxx.xxx 未訂閱
這篇文章我看過了覺的很難做不出來~~ 我要的是在一個二維陣列內把所有的合計做一個排序 比如有一些同學的國文成績各有不同的分數而當輸入完成後自動做一個名次排列 我這是以二維陣列做的
aquarius
資深會員


發表:3
回覆:347
積分:330
註冊:2003-05-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-06-17 10:28:09 IP:211.23.xxx.xxx 未訂閱
引言: 這篇文章我看過了覺的很難做不出來~~ 我要的是在一個二維陣列內把所有的合計做一個排序 比如有一些同學的國文成績各有不同的分數而當輸入完成後自動做一個名次排列 我這是以二維陣列做的
二維陣列的 SORT, 所以是完全在記憶體中的排序, 自己寫一個就好了呀! 如果資料不多(<1000筆), 那用 BUBBLE SORT 就夠了!! SORT 方法的實作隨找一本資料結構的書上都會有提. DELPHI 的 DEMOS 目錄下, 還有用 Thread 來實作各式 SORT Function 的 SAMPLE CODE. 參考一下吧!! ...Aquarius
------
水瓶男的blog: http://791909.blogspot.com
sundy6719
初階會員


發表:136
回覆:78
積分:42
註冊:2002-07-10

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-06-17 11:17:08 IP:211.74.xxx.xxx 未訂閱
aquarius大大您給了我一個方向可是我去找到的都是在資料庫找到的都是在資料庫內的語法 請問在陣列中要如何寫這個語法 我真的研究了好久真的想不出來...
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-06-17 11:32:55 IP:147.8.xxx.xxx 未訂閱
You need to implement sorting for array yourself. TList does support quick sort on the other hand.
aquarius
資深會員


發表:3
回覆:347
積分:330
註冊:2003-05-21

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-06-17 13:35:25 IP:210.243.xxx.xxx 未訂閱
給你一段簡單的 SAMPLE.     
 
unit Unit1;    interface    uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;    type
  TForm1 = class(TForm)
    Memo1: TMemo;
    BtnIndex: TButton;
    btnValue: TButton;
    procedure FormCreate(Sender: TObject);
    procedure BtnIndexClick(Sender: TObject);
    procedure btnValueClick(Sender: TObject);
  private
    { Private declarations }
    procedure ShowArray ;
  public
    { Public declarations }
  end;    var
  Form1: TForm1;    implementation
{$R *.DFM}    type
  baType=array[1..10,1..2] of integer ;    var
  ba : baType ;    procedure Sort(var A: baType;iType:integer);
var
  i, j: Integer;      procedure SwapElement(x,y:integer) ;
  var
    t1, t2 : integer ;
  begin
    t1:=ba[x,1] ;
    t2:=ba[x,2] ;
    ba[x,1]:=ba[y,1] ;
    ba[x,2]:=ba[y,2] ;
    ba[y,1]:=t1 ;
    ba[y,2]:=t2 ;
  end ;
begin
  for i:= High(A) downto Low(A) do
    for j:= Low(A) to High(A) - 1 do
      if A[j,iType] > A[j 1,iType] then
        SwapElement(j,j 1) ;
end;    procedure TForm1.FormCreate(Sender: TObject);
var
  i : integer ;
begin
  randomize ;
  for i:=1 to 10 do
    begin
    ba[i,1]:=i;
    ba[i,2]:=random(100) 1 ;
    end ;      ShowArray ;
end;    procedure TForm1.BtnIndexClick(Sender: TObject);
begin
  Sort(ba,1) ;
  ShowArray ;
end;    procedure TForm1.btnValueClick(Sender: TObject);
begin
  Sort(ba,2) ;
  ShowArray ;
end;    procedure TForm1.ShowArray;
var
  i : integer ;
begin
  Memo1.Clear ;
  Memo1.lines.Add('Index : Value') ;
  Memo1.lines.Add('=============') ;
  for i:=1 to 10 do
    Memo1.Lines.add(format('%.5d : %.4d',[ba[i,1],ba[i,2]])) ;
end;    end.
...Aquarius
------
水瓶男的blog: http://791909.blogspot.com
change.jian
版主


發表:29
回覆:620
積分:439
註冊:2003-06-02

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-06-17 17:16:53 IP:61.222.xxx.xxx 未訂閱
hi,sundy6719:   如果你想要把陣列裡的資料排序的話,其實TStringList是個很好的選擇.TStringList裡已有排序的功能,底下是Online help的範例:
var
  MyList: TStringList;
begin
  MyList := TStringList.Create;
  MyList.Add('Plants');
  MyList.Add('Animals');
  MyList.Add('Minerals');
  MyList.Sorted := True;
  ListBox1.Items.AddStrings(MyList);
  MyList.Free;
end;
上面是針對字串的內容去排序,如果你有自己的排序規則,也可以自己設定,然後把排序方法指定給TStringList即可,詳見TStringList.CustomSort的online help裡的說明.底下是範例:
unit Unit1;    interface    uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;    type
  TForm1 = class(TForm)
    Button1: TButton;
    ListBox1: TListBox;
    procedure Button1Click(Sender: TObject);
  private      public
    { Public declarations }
  end;    var
  Form1: TForm1;    implementation    {$R *.dfm}    function SortInteger(List: TStringList; Index1,
  Index2: Integer): Integer;
var
  iVal1,iVal2:Integer;
begin
  iVal1:=StrToIntDef(List.Strings[Index1],0);
  iVal2:=StrToIntDef(List.Strings[Index2],0);
  Result:=iVal1-iVal2;
end;    { TForm1 }    procedure TForm1.Button1Click(Sender: TObject);
var
  MyList: TStringList;
begin
  MyList := TStringList.Create;
  MyList.Add('345');
  MyList.Add('237');
  MyList.Add('178');
  MyList.CustomSort(SortInteger);
  ListBox1.Items.AddStrings(MyList);
  MyList.Free;
end;    end.
speedup
資深會員


發表:19
回覆:259
積分:280
註冊:2003-07-04

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-06-19 09:52:16 IP:218.168.xxx.xxx 未訂閱
引言: 在c 和vb都有排序設計可是在delphi我不知要如何使用找到的文章也都是c 在delphi要如何使用.....
其實如果你會用DataSet的話,直接拿TClientDataSet來當二維陣列使用,基本上不需要寫什麼sort程式,你想用哪個欄位排序及直接設IndexFieldNames即可 也不須接資料庫 混心雜欲 棄修身~唉
------
唉~
系統時間:2024-06-24 21:00:16
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!