lisp2arx
Visual Programming for AutoLisp
Mathématiques en programmation Lisp..
doc2cpp,doc2lsp, sld2lsp, bmp2dcl,
free__GifCcapture for all-CAD'platforms..
|
Lista Forumurilor Pe Tematici
|
lisp2arx | Reguli | Inregistrare | Login
POZE LISP2ARX
Nu sunteti logat.
|
Nou pe simpatie: Ela 22 Cluj pe Simpatie
| Femeie 22 ani Cluj cauta Barbat 22 - 48 ani |
|
admin
Administrator
Din: Bucharest
Inregistrat: acum 13 ani
Postari: 515
|
|
I need xchg for all-types-variabile., but the function xchg_han() have bugs Xchg_han crash and he do not swap values. Please help me... Xchg(I,j) is alias Exchange(I, J); How can I implement a quick sort in Delphi without getting Access violation errors for large numbers of records?
Code:
type
HMODULE= Cardinal; { HMODULEs can be used in place of HINSTs }
LHANDLE=HMODULE;
PLHANDLE=^HMODULE;
type tap_idaloadintv6=record
str:shortstring; // index
are:double;
sub:byte;
call:integer;
retw:word; //serial16
end;
Var HashTable:array[word] of tap_idaloadintv6;
Function xchg_han(a,b:pchar;extmin:word):boolean;
Var gap,nth:integer;swapOrder:dow;
Begin result:=false;
if (a=nil) or (b=nil) then exit else result:=true;
if (extmin>3) then
Begin gap:=extmin and 3;
extmin:=extmin shr 2;
for nth:=1 to extmin do
Begin swapOrder:=PLHANDLE(a)^;
PLHANDLE(a)^:=PLHANDLE(b)^;
PLHANDLE(b)^:=swapOrder;
inc(a);inc(a);inc(a);inc(a);
inc(b);inc(b);inc(b);inc(b);
End
End
else gap:=extmin;
for nth:=0 to gap do Begin extmin:=ord(a^);
a^:=b^;
b^:=chr(extmin);
inc(a);inc(b);
End;
End;
Function QSort_HashTable(LowJitters,HighJitters:Integer):TrueBool;
Var p1,p2:pchar;
procedure QuickSort(iLo, iHi: Integer);
var Lo, Hi, Mid: Integer;
begin
Lo := iLo;
Hi := iHi;
Mid := HashTable[(Lo + Hi) div 2].nn_call;
repeat
while HashTable[Lo].nn_call < Mid do Inc(Lo);
while HashTable[Hi].nn_call > Mid do Dec(Hi);
if (Lo <= Hi)
(xchg_han(@(HashTable[Hi],@HashTable[lo],sizeof(tap_idaloadintv6))
then
Begin
Inc(Lo);
Dec(Hi);
end;
until Lo > Hi;
if Hi > iLo then QuickSort(iLo, Hi);
if Lo < iHi then QuickSort(Lo, iHi);
end;
begin
if (LowJitters>HighJitters) then xchg_int(LowJitters,HighJitters);
QuickSort(LowJitters,HighJitters);
result:=true;
end; |
Initialization
Code:
Initialization
fillchar(HashTable,sizeof(HashTable),0); |
_______________________________________
|
|
pus acum 4 ani |
|