Delphi-PRAXiS
Seite 4 von 6   « Erste     234 56      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Funktion erstellen (https://www.delphipraxis.net/26182-funktion-erstellen.html)

Matze 20. Jul 2004 15:35

Re: Funktion erstellen
 
Also deine von oben sicher net, die Resourcenschutzblöcke müssen rein!

Rackergen2 20. Jul 2004 16:01

Re: Funktion erstellen
 
Dann erzähl mir mal, wo hier ein Fehler auftreten soll, der s1.free überspringt?

Delphi-Quellcode:
function TForm1.CreateAutorunFile(app, icon, destfile: String): boolean;
var
  sl: TStringList;
begin
  result:=true;
  sl:=TStringList.create;
  sl.add('[autorun]');
  sl.add('OPEN='+app);
  sl.add('ICON='+icon);
  if copy(destfile, length(destfile)-4, 4)<>'.inf' then destfile:=destfile+'.inf';

  try
    sl.SaveToFile(destfile);
  except
    result:=false;
  end;

  sl.free;
end;
Weil:
Delphi-Quellcode:
result:=true;
sl:=TStringList.create;
sl.add('[autorun]');
sl.add('OPEN=' + app);
sl.add('ICON=' + icon);
if copy(destfile, length(destfile) - 4, 4) <> '.inf' then destfile := destfile + '.inf';
Hier KANN nichts passieren und das Schreiben ist schon durch ein try abgesichert...

Matze 20. Jul 2004 16:04

Re: Funktion erstellen
 
Es ist immer so, dass man die Dinge, die man ganz sicher freigeben möchte in einen finally-Abschnitt gibt.

Ob du nun mit der Registry arbeitest oder mit Inis, oder auch mit Stringlists...

Rackergen2 20. Jul 2004 16:09

Re: Funktion erstellen
 
Es ist ja schön, dass du das machst, aber in diesem Fall ist es einfach UNNÖTIG!

Matze 20. Jul 2004 16:12

Re: Funktion erstellen
 
Nein

Rackergen2 20. Jul 2004 16:15

Re: Funktion erstellen
 
Dann erzähl mir, wie du es schaffen willst, diese Funktion zum crashen zu bringen... Da bin ich ja mal gespannt...

mirage228 20. Jul 2004 16:30

Re: Funktion erstellen
 
Zitat:

Zitat von Rackergen2
Dann erzähl mir, wie du es schaffen willst, diese Funktion zum crashen zu bringen... Da bin ich ja mal gespannt...

Hi,

im Normallfall dürfte es bei einem TStringList.Add() keine Schwierigkeiten geben.
Aber: Sollte es mal zu irgendwelchen Störungen im System kommen (defekter Speicher, Speicher voll, etc...). Dann wird diese Operation IMHO eventuell eine Zugriffsverletzung (oder Ähnliches) auslösen und somit sollte es allein schon sicherheitshalber komplett vom try...finally umschlossen werden. Man hat dann (fast) die absolute Sicherheit und ein mehraufwand ist es auch nicht ;)

mfG
mirage228

Matze 20. Jul 2004 16:32

Re: Funktion erstellen
 
Da braucht nur nen Schreibfehler im Speicher auftreten oder ein anderes Programm greift unerwartet auf die Speicheradresse zu, was bei mir schon vorkam...

Rackergen2 20. Jul 2004 16:49

Re: Funktion erstellen
 
Na ihr könnt Zufälle absichern, die gibt es gar nicht ;)

Matze 20. Jul 2004 16:52

Re: Funktion erstellen
 
Es ist auf jedenfall ratsam, Resourcenschutzblöcke zu verwenden. Wie der Name schon sagt, sollen diese die Resourcen, sprich den Speicher, schützen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:06 Uhr.
Seite 4 von 6   « Erste     234 56      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz