03-02-2018, Saat: 16:52
Tugrul abi , FreeAndNil kullaniyorum , kullanmaya da devam edecegim. Kullanmaya devam etmemin en buyuk nedeni de senin dedigin gibi programi programcidan korumak icin.
Daha iyi oldugundan ya da olmasi gereken o oldugu icin degil kendi hatami tolere etmek icin kullanmaya devam edecegim.
Bu kod blogu benim de kullandigim bir blok ama yillardir kullandigimiz icin sanirim bize dogru geliyor oysaki gunluk hayatin akisina ters bir durum mevcut. Kodu bir de soyle yazalim belki daha iyi anlasilir.
Arabanin calismadigini AVM den ciktigimizda zaten biliyoruz , gunluk hayatta boyle bir kontrol yapmiyoruz. AVM ' den cikinca arabayi once calistirip sonra gaza basiyoruz.
Gunluk hayatta yapmadigimiz bir davranisi kod yazarken yapmis oluyoruz. Bu isin detaylarini artik bir araya geldigimizde konusuruz Tugrul abi
Edit:
Bu da VCL kodundan alinmis bir bolum. FreeAndNil komutundan dolayi bu kodu yazan arkadas 25. ve 44. satirlarda biraz musrif davranmamis mi ?
Daha iyi oldugundan ya da olmasi gereken o oldugu icin degil kendi hatami tolere etmek icin kullanmaya devam edecegim.
var C : TObject; begin C := TObject.Create; ... ... FreeAndNil( C ); ... ... if Assigned( C ) then C.Birşey; end;
Bu kod blogu benim de kullandigim bir blok ama yillardir kullandigimiz icin sanirim bize dogru geliyor oysaki gunluk hayatin akisina ters bir durum mevcut. Kodu bir de soyle yazalim belki daha iyi anlasilir.
begin ArabayiCalistir; //C := TObject.Create; ArabaninGazinaBas; ArabayiAVMyeSur; ArabayiDurdur; //FreeAndNil( C ); AVMyeGir; AVMDeGezDolasDur; AVMdenCik; Eger ArabaCalisiyorsa //if Assigned( C ) then ArabaninGazinaBas; end;
Arabanin calismadigini AVM den ciktigimizda zaten biliyoruz , gunluk hayatta boyle bir kontrol yapmiyoruz. AVM ' den cikinca arabayi once calistirip sonra gaza basiyoruz.
Gunluk hayatta yapmadigimiz bir davranisi kod yazarken yapmis oluyoruz. Bu isin detaylarini artik bir araya geldigimizde konusuruz Tugrul abi

Edit:
Bu da VCL kodundan alinmis bir bolum. FreeAndNil komutundan dolayi bu kodu yazan arkadas 25. ve 44. satirlarda biraz musrif davranmamis mi ?
function TAmazonQueueService.CreateQueue(const QueueName: string; out QueueURL: string;
const DefaultVisibilityTimeout: Integer;
ResponseInfo: TCloudResponseInfo): Boolean;
var
Response: TCloudHTTP;
QueryParams: TStringList;
xml: string;
xmlDoc: IXMLDocument;
ResultNode, QueueNode: IXMLNode;
begin
QueryParams := BuildQueryParameters('CreateQueue');
QueryParams.Values['QueueName'] := QueueName;
if DefaultVisibilityTimeout > -1 then
begin
QueryParams.Values['Attribute.1.Name'] := 'VisibilityTimeout';
QueryParams.Values['Attribute.1.Value'] := IntToStr(DefaultVisibilityTimeout);
end;
Response := nil;
try
Response := IssueRequest(GetConnectionInfo.QueueURL, QueryParams, ResponseInfo, xml);
Result := (Response <> nil) and (Response.ResponseCode = 200);
FreeAndNil(Response);
if Result and (xml <> EmptyStr) then
begin
//Parse XML and get QueueURL value
xmlDoc := TXMLDocument.Create(nil);
xmlDoc.LoadFromXML(XML);
ResultNode := xmlDoc.DocumentElement.ChildNodes.FindNode(NODE_QUEUE_CREATE_RESULT);
if (ResultNode <> nil) and (ResultNode.HasChildNodes) then
begin
QueueNode := ResultNode.ChildNodes.FindNode(NODE_QUEUE);
if (QueueNode <> nil) and (QueueNode.IsTextElement) then
QueueURL := QueueNode.Text;
end;
end;
finally
if Assigned(Response) then
FreeAndNil(Response);
FreeAndNil(QueryParams);
end;
end;

