function callZipAPI(addSearchZip){
var geocoder = new google.maps.Geocoder();
var zipCode = null;
geocoder.geocode({ 'address': addSearchZip }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
//var latitude = results[0].geometry.location.lat();
//var longitude = results[0].geometry.location.lng();
var addressComponent = results[0].address_components;
for (var x = 0 ; x < addressComponent.length; x++) {
var chk = addressComponent[x];
if (chk.types[0] == 'postal_code') {
zipCode = chk.long_name;
}
}
if (zipCode) {
alert(zipCode);
}
else {
alert('No result found!!');
}
} else {
alert('Enter proper address!!');
}
});}
Да. Это ничего не делает, правда, но это безвредно. Я думаю, что важно быть последовательным, всегда вызывая унаследованный конструктор, не проверяя, есть ли на самом деле реализация. Некоторые скажут, что стоит вызывать унаследованный Create, потому что Embarcadero может добавить реализацию TObject.Create в будущем, но я сомневаюсь, что это правда; это сломало бы существующий код, который не вызывает наследуемый Create. Тем не менее, я думаю, что это хорошая идея - называть это только из соображений последовательности.
Я всегда так делаю.
Если вы выполняете рефакторинг и перемещаете код к общему предку, вызов унаследованного Create имеет следующие преимущества:
Вы также можете переопределить «процедуру AfterConstruction». Эта процедура всегда вызывается, независимо от того, какой конструктор.
public
procedure AfterConstruction; override;
end;
procedure TfrmListBase.AfterConstruction;
begin
inherited;
//your stuff, always initialized, no matter what kind of constructor!
end;
Например: если вы хотите создать объект с конструктором, отличным от обычного TObject.Create, таким как TComponent.Create (AOwner) или пользовательский (перегруженный) конструктор, вы можете получить проблемы, поскольку переопределение не вызывается и (в этом случае) ваша переменная VectorNames будет равна нулю.
Я называю это, кроме случаев, когда мне нужен очень оптимизированный конструктор.