Я искал несколько дней, как это сделать, и это не совсем то, что мне нужно делать (или я просто не понимаю, как реализовать решение).
Что мне нужно сделать, так это проанализировать строку, которая является уличным адресом, в TStringList, а затем установить эти строки из списка в переменные, которые я затем могу передать остальной части программы. У меня уже есть список, работающий нормально:
var
AddressList : TStringList;
i : integer;
begin
AddressList := TStringList.Create;
AddressList.Delimiter := ' ';
AddressList.DelimitedText := RawAddressStr; //RawAddressStr is parsed from another file and the string result is something like '1234 Dark Souls Lane Wyoming, MI 48419'
for i := 0 to AddressList.Count-1 do
AddressList.Strings[i]; //Not sure what to do here
Проблема в том, что адрес не всегда имеет одинаковую длину. Адрес иногда будет выглядеть как «1234 Dark Souls Two Lane Wyoming...» или «1234 Dark Lane Wyoming...»
Поэтому мне нужно иметь возможность использовать этот TStringList для установки Zip, State и City в переменные для последующего использования. Я бы использовал TStringList.Find, но почтовый индекс не всегда одинаков. Есть ли способ получить последнюю строку, а затем вернуться оттуда? (Двигаясь назад, потому что, как только я получу ZIP-адрес города, штата, я могу удалить его из RawAddressStr, а затем установить остальное в строку адреса.)
Спасибо.
Отредактируйте, вот код, который мне нужен (благодаря комментариям ниже): AddressList := TStringList.Create;
AddressList.Delimiter := ' ';
AddressList.DelimitedText := RawAddressStr;
for i := 0 to AddressList.Count-1 do
LastIndex := AddressList.Count - 1;
ZipStr := AddressList[LastIndex];
StateStr := AddressList[LastIndex - 1];
CityStr := AddressList[LastIndex - 2];
Теперь я могу использовать их с StringReplace, чтобы удалить City, State Zip из полной адресной строки и установить его в качестве используемой адресной строки.
AdressList
— этоAdressList.Strings[AdressList.Count - 1]
(которую можно сократить доAdressList[AdressList.Count - 1]
). - person Andreas Rejbrand   schedule 24.09.2014LastIndex := AddressList.Count - 1;
, а затем уменьшайте (вычитайте)LastIndex
на 1, пока не достигнете0
. - person Ken White   schedule 24.09.2014begin
иend
, как сейчас, только LastIndex будет назначено количество раз AddresList.Count... Отступ не контролирует поток кода в Delphi/ObjectPascal. - person Stijn Sanders   schedule 24.09.2014