Puedes realizar un "preproceso" antes de obtener los campos para cambiar las dos tabulaciones que vengas seguidas por otro valor.
Por ejemplo, cuando encuentres #9#9 (dos tabulaciones) lo modificas por #9$$$#9.
De ésta forma tendrás en número de campos completo, pero los nulos vendrán con valor $$$; Luego es cuestión de detectarlos y añadirlos como nulos.
No se si me he explicado bien; Algo así (no lo he compilado, así que tal vez haya algun error, pero espero que la idea se entienda):
Código Delphi
[-]
var
ArchivoCsv, Campos: TStringList;
I, J: Integer;
Str:String;
begin
ArchivoCsv := TStringList.Create;
Campos := TStringList.Create;
Campos.Delimiter := #9;
try
ArchivoCsv.LoadFromFile(JvDirectoryEdit.EditText+'\'+Archivo);
for I := 0 to ArchivoCsv.Count - 1 do
begin
Str := AnsiReplaceStr(ArchivoCsv[i], #9#9, #9+'$$$'+#9);
Campos.Clear;
Campos.DelimitedText := StrArchivoCsv[i]};
if(Campos.Count > 5 ) then
begin
ADOTableImporta.Insert;
for J := 0 to Campos.Count - 1 do
begin
if (Campos[J] = '$$$') then begin
ADOTableImporta.Fields[J].Clear;
end
else begin
ADOTableImporta.Fields[J].Value := Campos[J];
end;
end;
ADOTableImporta.Post;
end;
end;
finally
ArchivoCsv.Free;
Campos.Free;
end;
end;
NOTA: He intentado resaltar el texto nuevo, y no si se ve peor o mejor...