procedure ListReOrder(AResvData:array of TResvData);
var
i,j:integer;
MinTime : TDateTime;
MinStr,AStr:string;
AID:integer;
begin//排序
for i:= Low(AResvData) to High(AResvData) do
begin
MinTime := StrToTime(AResvData[i].RTime);
MinStr := AResvData[i].RName;
for j:= i+1 to High(AResvData) do
if MinTime > StrToTime(AResvData[J].RTime) then
begin
AStr := AResvData[i].RTime;
AResvData[i].RTime := AResvData[j].RTime;
AResvData[j].RTime := AStr;
MinTime := StrToTime(AStr); AStr := AResvData[i].RName;
AResvData[i].RName := AResvData[j].RName;
AResvData[j].RName := AStr; AID := AResvData[i].RID;
AResvData[i].RID := AResvData[j].RID;
AResvData[j].RID := AID;
end;
end;
ShowMessage(AResvData[0].RName+AResvData[1].RName+AResvData[2].RName); //2009.1.7.10.09
end;数组的排序,到showmessage时显示的都是正确的排序,但一运行到最后一个END时,排序又变成原来的了。据个例子,原本排序是321,经过程序到最后一步之前我追踪数组是123,但最后一步运行了就变321了...为什么啊?
var
i,j:integer;
MinTime : TDateTime;
MinStr,AStr:string;
AID:integer;
begin//排序
for i:= Low(AResvData) to High(AResvData) do
begin
MinTime := StrToTime(AResvData[i].RTime);
MinStr := AResvData[i].RName;
for j:= i+1 to High(AResvData) do
if MinTime > StrToTime(AResvData[J].RTime) then
begin
AStr := AResvData[i].RTime;
AResvData[i].RTime := AResvData[j].RTime;
AResvData[j].RTime := AStr;
MinTime := StrToTime(AStr); AStr := AResvData[i].RName;
AResvData[i].RName := AResvData[j].RName;
AResvData[j].RName := AStr; AID := AResvData[i].RID;
AResvData[i].RID := AResvData[j].RID;
AResvData[j].RID := AID;
end;
end;
ShowMessage(AResvData[0].RName+AResvData[1].RName+AResvData[2].RName); //2009.1.7.10.09
end;数组的排序,到showmessage时显示的都是正确的排序,但一运行到最后一个END时,排序又变成原来的了。据个例子,原本排序是321,经过程序到最后一步之前我追踪数组是123,但最后一步运行了就变321了...为什么啊?
试试看
改成
procedure ListReOrder(var AResvData:array of TResvData);