關於更新排序 |
答題得分者是:eaglewolf
|
delphi
初階會員 發表:52 回覆:64 積分:38 註冊:2002-05-21 發送簡訊給我 |
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
陣列嗎?
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Memo1: TMemo; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; TNumbers=array[1..6] of integer; var Form1: TForm1; implementation {$R *.dfm} procedure ChangeArrayOrder(var aArray:TNumbers;FromPos:integer); var Lo,Hi,Offset,Temp:integer; TempNumbers:TNumbers; begin Lo := Low(aArray); Hi := High(aArray); if ( FromPos > Hi ) or ( FromPos < Lo ) then exit; Windows.CopyMemory(@TempNumbers,@aArray,sizeof(aArray)); Temp := Lo; for Offset := FromPos to Hi do begin aArray[Offset] := TempNumbers[Temp]; Inc(Temp); end; for Offset := Lo to FromPos - 1 do begin aArray[Offset] := TempNumbers[Temp]; Inc(Temp); end; end; procedure TForm1.FormCreate(Sender: TObject); var Again,Count,Index:integer; SomeNumbers:TNumbers; begin Self.Memo1.Lines.Add('the original value in the array is:'); for Again := Low(SomeNumbers) to High(SomeNumbers) do begin SomeNumbers[Again] := Again; Self.Memo1.Lines.Add(IntToStr(SomeNumbers[Again])); end; for Count := Low(SomeNumbers) to High(SomeNumbers) do begin for Again := Low(SomeNumbers) to High(SomeNumbers) do SomeNumbers[Again] := Again; Self.Memo1.Lines.Add('Now change index order to ' IntToStr(Count) ', and the value in the array is:'); ChangeArrayOrder(SomeNumbers,Count); for Index := Low(SomeNumbers) to High(SomeNumbers) do Self.Memo1.Lines.Add(IntToStr(SomeNumbers[Index])); end; for Count := High(SomeNumbers) downto Low(SomeNumbers) do begin for Again := High(SomeNumbers) downto Low(SomeNumbers) do SomeNumbers[Again] := Again; Self.Memo1.Lines.Add('Now backward, change index order to ' IntToStr(Count) ', and the value in the array is:'); ChangeArrayOrder(SomeNumbers,Count); for Index := Low(SomeNumbers) to High(SomeNumbers) do Self.Memo1.Lines.Add(IntToStr(SomeNumbers[Index])); end; end; end. |
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Memo1: TMemo; Edit1: TEdit; Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} var NO: array[1..6] of Integer; procedure TForm1.FormCreate(Sender: TObject); var i: Integer; begin Memo1.Clear; Edit1.Text:=''; for i:=1 to 6 do // 設定每個索引值 NO[i]:=i; end; procedure TForm1.Button1Click(Sender: TObject); var i: Integer; begin // 從 Edit1.Text 設定值開始重新排序 for i:=1 to 6 do begin NO[i]:= ( i 6 - StrToInt(Edit1.Text) ) mod 7; // 重點是用 MOD 重新去計算 Memo1.Lines.Add(IntToStr(NO[i])); end; end; end.
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案! 子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問! |
delphi
初階會員 發表:52 回覆:64 積分:38 註冊:2002-05-21 發送簡訊給我 |
謝謝大大的解答
但小弟還是有點不理解 1.NO會隨的資料量的不同而增多或減少array要怎麼宣告 2.我想要做的是在edit理面填入值他就會從填入的排序在資料庫查出然後 從那筆開始為1一直排序下去,程式碼如下 SELECT * FROM 1234 WHERE NO >='3' iSN := 0; while not EOF do begin Inc(iSN); Edit; FieldByName('NO').AsInteger := iSN; Post; Next; end; 假設這序號有10筆 這樣子寫3以後的都會更改為1 2 3 4 5 6 7 8 但是前面的1跟2就會沒改到 就會變成有兩個1跟2 我要如何讓原本的1變成9,2變成10 謝謝 |
delphi
初階會員 發表:52 回覆:64 積分:38 註冊:2002-05-21 發送簡訊給我 |
謝謝大大的解答
但小弟還是有點不理解 1.NO會隨的資料量的不同而增多或減少array要怎麼宣告 2.我想要做的是在edit理面填入值他就會從填入的排序在資料庫查出然後 從那筆開始為1一直排序下去,程式碼如下 SELECT * FROM 1234 WHERE NO >='3' iSN := 0; while not EOF do begin Inc(iSN); Edit; FieldByName('NO').AsInteger := iSN; Post; Next; end; 假設這序號有10筆 這樣子寫3以後的都會更改為1 2 3 4 5 6 7 8 但是前面的1跟2就會沒改到 就會變成有兩個1跟2 我要如何讓原本的1變成9,2變成10 謝謝 |
eaglewolf
資深會員 發表:4 回覆:268 積分:429 註冊:2006-07-06 發送簡訊給我 |
SQL Command 改成 Select * From Table Order By No
iSN := RecordCount - StrToInt(edit1.Text); while not EOF do begin Inc(iSN); Edit; FieldByName('NO').AsInteger := (iSN mod RecordCount ) 1 ; Post; Next; end;
------
先查HELP 再查GOOGLE 最後才發問 沒人有義務替你解答問題 在標題或文章中標明很急 並不會增加網友回答速度 Developing Tool: 1.Delphi 6 2.Visual Studio 2005 3.Visual Studio 2008 DBMS: MS-SQL |
delphi
初階會員 發表:52 回覆:64 積分:38 註冊:2002-05-21 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
|
delphi
初階會員 發表:52 回覆:64 積分:38 註冊:2002-05-21 發送簡訊給我 |
|
qoo1234
版主 發表:256 回覆:1167 積分:659 註冊:2003-02-24 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |