我知道.net里面有很多delphi 高手,故来此求救:
我现在需要把下面这个for循环改成多线程,循环一次,添加一个线程。
for iCount := 1 to Length(ASQL) do
begin
if (ASQL[iCount] = #13) or (ASQL[iCount] = #10) or (ASQL[iCount] = #0) then
ASQL[iCount] := ' '; case ASQL[iCount] of
'''':
begin
iDelimitCount := Integer(slDelim.Objects[0]);
if (iDelimitCount > 0) then
Dec(iDelimitCount)
else
Inc(iDelimitCount); slDelim.Objects[0] := TObject(iDelimitCount);
end; '(': UpdateDelimiterCount(1, True);
')': UpdateDelimiterCount(1, False);
'[': UpdateDelimiterCount(2, True);
']': UpdateDelimiterCount(2, False);
'{': UpdateDelimiterCount(3, True);
'}': UpdateDelimiterCount(3, False);
end; if (ASQL[iCount] = ' ') and (IsEndOfExpression) then
begin
if (sText = 'FROM') then iFrom := iCount - 5;
if (sText = 'WHERE') then
iWhere := iCount - 6;
sText := '';
end
else
sText := sText + ASQL[iCount];
end
还有,但线程结束后,假如sText的值应该是‘abcde’,会不会可能乱了顺序成了‘acdbe’,'aecbd'等等
我现在需要把下面这个for循环改成多线程,循环一次,添加一个线程。
for iCount := 1 to Length(ASQL) do
begin
if (ASQL[iCount] = #13) or (ASQL[iCount] = #10) or (ASQL[iCount] = #0) then
ASQL[iCount] := ' '; case ASQL[iCount] of
'''':
begin
iDelimitCount := Integer(slDelim.Objects[0]);
if (iDelimitCount > 0) then
Dec(iDelimitCount)
else
Inc(iDelimitCount); slDelim.Objects[0] := TObject(iDelimitCount);
end; '(': UpdateDelimiterCount(1, True);
')': UpdateDelimiterCount(1, False);
'[': UpdateDelimiterCount(2, True);
']': UpdateDelimiterCount(2, False);
'{': UpdateDelimiterCount(3, True);
'}': UpdateDelimiterCount(3, False);
end; if (ASQL[iCount] = ' ') and (IsEndOfExpression) then
begin
if (sText = 'FROM') then iFrom := iCount - 5;
if (sText = 'WHERE') then
iWhere := iCount - 6;
sText := '';
end
else
sText := sText + ASQL[iCount];
end
还有,但线程结束后,假如sText的值应该是‘abcde’,会不会可能乱了顺序成了‘acdbe’,'aecbd'等等
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货