我有一个大约10K名字和名单的清单。需要清理的地址,我已设法清理地址,现在扩展程序以满足其他字段,我的代码编译没有任何问题,但是当我尝试运行程序时突出显示以下内容
000000010000DD9E 743d je 0x10000dddd
<SYSTEM$_$TOBJECT_$__$$_CREATE$$TOBJECT+125>
代码中唯一的create命令与一个字符串列表相关,我将其用于存储拆分信息,然后将其转换为变量,然后将其发送到单独的SdfDataSet,我的代码在我处理地址时工作得很好那为什么现在失败了呢?我认为可能是因为需要单独的stringLists但是创建不止一个列表会导致同样的问题。
原谅相当大的代码:
procedure TForm1.Button1Click(Sender: TObject);
var
i : Integer;
title, str1, str2, str3, str4, address : String;
result : TStringList;
begin
// Add field to address data set
AddressData.FieldDefs.Add('Title', ftString); // 0
AddressData.Schema.Add('Title');
AddressData.FieldDefs.Add('Fore', ftString); // 1
AddressData.Schema.Add('Fore');
AddressData.FieldDefs.Add('Sur', ftString); // 2
AddressData.Schema.Add('Sur');
AddressData.FieldDefs.Add('Address', ftString); // 3
AddressData.Schema.Add('Address');
AddressData.Active := True;
AddressData.Edit;
result.Create; // This seems to be the problem
// Begin export
with Initial_Data do begin
for i := 1 to RecordCount do
begin
RecNo := i;
title := Fields[13].AsString;
str1 := Fields[8].AsString;
str2 := Fields[9].AsString;
str3 := Fields[10].AsString;
str4 := Fields[11].AsString;
// Clean Titles
// Split at first space or period
if title <> '' then
begin
ExtractStrings([' ', '.'], [' '], PChar(title), result);
title := result[0];
end
else title := null;
// Concentate Addresses
// Check markup of string 1
if (AnsiEndsStr(',', str1) = False) then
str1 := str1 + ', '
else
if (AnsiEndsStr(',', str1) = True) then
str1 := str1 + ' ';
// Check markup of string 2
if (AnsiEndsStr(',', str2) = False) then
if str3 = '' then
str2 := str2
else
str2 := str2 + ', '
else
if (AnsiEndsStr(',', str2) = True) then
if str3 <> '' then
str2 := str2 + ' ';
// Markup for string 3
if (AnsiEndsStr(',', str3) = False) then
if str4 = '' then
str3 := str3
else
str3 := str3 + ', '
else
if (AnsiEndsStr(',', str3) = True) then
if str4 <> '' then
str3 := str3 + ' ';
// Cleanup final string
if (AnsiEndsStr('.', str4) = True) then
begin
ExtractStrings(['.'], [' '], PChar(str4), result);
str4 := result[0];
end
else
if (AnsiEndsStr(',', str4) = True) then
begin
ExtractStrings([','], [' '], PChar(str4), result);
str4 := result[0];
end;
// Compile address
address := str1 + str2 + str3 + str4;
// Add records to address
with AddressData do
begin
RecNo := i;
Insert;
Fields[0].AsString := title;
Fields[3].AsString := address;
Post;
end;
if result[0] <> '' then
result.Free;
end; // Close of for loop
end;
AddressData.Refresh;
end;