AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language aus einer Liste Einträge in eine andere Liste verschieben
Thema durchsuchen
Ansicht
Themen-Optionen

aus einer Liste Einträge in eine andere Liste verschieben

Ein Thema von Bjoerk · begonnen am 11. Sep 2014 · letzter Beitrag vom 14. Sep 2014
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#11

AW: aus einer Liste Einträge in eine andere Liste verschieben

  Alt 12. Sep 2014, 08:30
Damit es auch hier steht
Delphi-Quellcode:
procedure fooOne;
var
  bar : TBar;
begin
  bar := TBar.Create;
  try
    // work on bar
  finally
    bar.Free;
  end;
end;

// aber nicht so

procedure fooNleaks;
var
  bar1 : TBar1;
  bar2 : TBar2;
begin
  bar1 := TBar1.Create;
  // wenn jetzt eine Exception ausgelöst wird, dann wird bar1 niemals entfernt!
  bar2 := TBar2.Create;
  try
    // work on bars
  finally
    bar1.Free;
    bar2.Free;
  end;
end;

// darum so

procedure fooNsafe;
var
  bar1 : TBar1;
  bar2 : TBar2;
begin
  // lokale Variablen sind NICHT initialisiert, darum auf NIL setzen!
  bar1 := nil;
  bar2 := nil;
  try
    bar1 := TBar1.Create;
    // wenn jetzt eine Exception ausgelöst wird, dann wird bar1 korrekt entfernt!
    bar2 := TBar2.Create;
    // work on bars
  finally
    bar1.Free;
    bar2.Free;
  end;
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#12

AW: aus einer Liste Einträge in eine andere Liste verschieben

  Alt 12. Sep 2014, 08:38
Und damit es auch komplett hier steht, die Alternative:
Delphi-Quellcode:
procedure fooNsafe;
var
  bar1 : TBar1;
  bar2 : TBar2;
begin
  //Verschachteln der Ressourcenschutzblöcke
  bar1 := TBar1.Create;
  try
    bar2 := TBar2.Create;
    try
      // work on bars
    finally
      bar2.Free;
    end;
  finally
    bar1.Free;
  end;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#13

AW: aus einer Liste Einträge in eine andere Liste verschieben

  Alt 12. Sep 2014, 10:16
@DeddyH

Wer macht denn sowas?

Ja geht auch, aber mir ist das zu verschachtelt und zuviel Tipparbeit ... nix für faule Leute wie mich
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#14

AW: aus einer Liste Einträge in eine andere Liste verschieben

  Alt 12. Sep 2014, 10:20
Wenn es nur 2 Blöcke sind, mache ich das schon. Sollten es mehr sein, tut die Methode wahrscheinlich sowieso schon zu viel, ist also ein Fall für die Auslagerung
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#15

AW: aus einer Liste Einträge in eine andere Liste verschieben

  Alt 13. Sep 2014, 11:41
Danke für die Info. So habe ich das zwar noch nicht gesehen, aber bei mir kommt es nicht so oft vor, dass mehrere Creates hintereinander ausgeführt werden.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.142 Beiträge
 
Delphi 10.3 Rio
 
#16

AW: aus einer Liste Einträge in eine andere Liste verschieben

  Alt 13. Sep 2014, 18:58
@
Ja geht auch, aber mir ist das zu verschachtelt und zuviel Tipparbeit ... nix für faule Leute wie mich
hmm...

Delphi-Quellcode:
var
  IBar1 : TBar1Intf;
  IBar2 : TBar2Intf;
begin
  IBar1 := TBar1Impl.Create;
  IBar2 := TBar2Impl.Create;
  // work on iBar's
end;
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#17

AW: aus einer Liste Einträge in eine andere Liste verschieben

  Alt 14. Sep 2014, 11:53
TBar1Intf, TBar2Intf, TBar1Impl, TBar2Impl: Qu'est-ce que c'est?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#18

AW: aus einer Liste Einträge in eine andere Liste verschieben

  Alt 14. Sep 2014, 12:17
Bei einem Interface mit Referenzzählung braucht man auch nicht freigeben.

Und benennen kann man die, wie man will, ein I statt einem T ist ratsam aber nicht Pflicht
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#19

AW: aus einer Liste Einträge in eine andere Liste verschieben

  Alt 14. Sep 2014, 12:42
Bei einem Interface mit Referenzzählung braucht man auch nicht freigeben.
Stimmt, aber wenn die Implementationen von TInterfacedPersistent abstammen, ist der gezeigte Code wieder für's Gesäß. Außerdem finde ich es fragwürdig, Interfaces als Ersatz für Garbage Collection zu benutzen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#20

AW: aus einer Liste Einträge in eine andere Liste verschieben

  Alt 14. Sep 2014, 15:14
Ok. Mit interfaces arbeite ich eh nie (keinen Plan). Würde mal sagen, bei Klassen hängt's auch davon ab, was im constructor so passiert. Ein TObject.Create wird wohl nicht wahnsinnig viele Exceptions werfen? Dennoch, ich stimme #14 voll und ganz zu und so hatte ich's ja auch gemacht.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz