Я не знаю много о программировании на Delphi Win 32, но я надеюсь, что кто-нибудь ответит на мой вопрос.
Я получаю дубликат l_sGetUniqueIdBuffer, сохраненный в базе данных, которого я хочу избежать.
l_sGetUniqueIdBuffer фактически отличается (значение l_sAuthorisationContent равно xml, и я вижу другое значение, сгенерированное вызовом getUniqueId) между строками.Эта проблема является неустойчивой (дубликаты встречаются редко ...) Разница в дате обновления между строками составляет только миллисекунды.
Дано:
(исключен бессмысленный код)
var
l_sGetUniqueIdBuffer: PChar;
FOutputBufferSize : integer;
begin
FOutputBufferSize := 1024;
...
while( not dmAccomClaim.ADOQuClaimIdentification.Eof ) do
begin
// Get a unique id for the request
l_sGetUniqueIdBuffer := AllocMem (FOutputBufferSize);
l_returnCode := getUniqueId (m_APISessionId^, l_sGetUniqueIdBuffer, FOutputBufferSize);
dmAccomClaim.ADOQuAddContent.Active := False;
dmAccomClaim.ADOQuAddContent.Parameters.ParamByName('pContent').Value := (WideString(l_sAuthorisationContent));
dmAccomClaim.ADOQuAddContent.Parameters.ParamByName('pClaimId').Value := dmAccomClaim.ADOQuClaimIdentification.FieldByName('SB_CLAIM_ID').AsString;
dmAccomClaim.ADOQuAddContent.Parameters.ParamByName('pUniqueId').Value := string(l_sGetUniqueIdBuffer);
dmAccomClaim.ADOQuAddContent.ExecSQL;
FreeMem( l_sAuthorisationContent, l_iAuthoriseContentSize );
FreeMem( l_sGetUniqueIdBuffer, FOutputBufferSize );
end;
end;
Полагаю, мне нужно знать, сбрасывается ли значение в l_sGetUniqueIdBuffer для каждой строки ??