AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TFile, TDirectory vs. alte Funktionen

Ein Thema von bernau · begonnen am 12. Aug 2015 · letzter Beitrag vom 2. Sep 2015
Antwort Antwort
Seite 3 von 3     123   
Dejan Vu
(Gast)

n/a Beiträge
 
#21

AW: TFile, TDirectory vs. alte Funktionen

  Alt 14. Aug 2015, 07:20
'with' ist nicht bä, sondern nur unpraktisch.

Nur um es noch einmal festzuhalten: TFile.Exists hat nichts, aber auch gar nichts mit OOP zu tun. TFile ist eine statische Klasse und das ist nichts anderes als eine Unit.

Der von alda skizzierte Ansatz wäre wirklich sehr angenehm, zumal ich dann auch auf der Ebene ordentliche (bzw. überhaupt) Unittests schreiben kann. Ansonsten ist das Mocken von 'TFile.Exists' auch nicht so einfach.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#22

AW: TFile, TDirectory vs. alte Funktionen

  Alt 14. Aug 2015, 08:02
'with' ist nicht bä, sondern nur unpraktisch.
Ist doch völlig wurscht, ob man jetzt "bä" oder "böse" oder "besser nicht verwenden" sagt. Fakt ist, daß die Verwendung von with gewisse Risiken birgt, die zu schwer auffindbaren Fehlern führen können und deshalb tunlichst vermieden werden sollte.
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.295 Beiträge
 
Delphi 12 Athens
 
#23

AW: TFile, TDirectory vs. alte Funktionen

  Alt 14. Aug 2015, 08:57
Nur um es noch einmal festzuhalten: TFile.Exists hat nichts, aber auch gar nichts mit OOP zu tun. TFile ist eine statische Klasse und das ist nichts anderes als eine Unit.
Ich habe nicht geschrieben, daß die jetzige Version OOP ist, sondern daß ich diese Schreibweise als sehr angenehm empfinde.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
alda

Registriert seit: 24. Mär 2014
Ort: Karlsruhe
93 Beiträge
 
Delphi XE6 Architect
 
#24

AW: TFile, TDirectory vs. alte Funktionen

  Alt 14. Aug 2015, 10:26
Der von alda skizzierte Ansatz wäre wirklich sehr angenehm, zumal ich dann auch auf der Ebene ordentliche (bzw. überhaupt) Unittests schreiben kann. Ansonsten ist das Mocken von 'TFile.Exists' auch nicht so einfach.
Genau, und die einzige Möglichkeit die Du für solche "prozeduralen" Ansätze hast, ist die komplette Unit im Testprojekt zu überschreiben. Das geht dann aber halt auch nur ein einziges Mal innerhalb dieses Testprojektes
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
591 Beiträge
 
Delphi XE6 Enterprise
 
#25

AW: TFile, TDirectory vs. alte Funktionen

  Alt 2. Sep 2015, 15:26
Übrigens: with ist bäh
So, wie es Delphi aktuell macht, ja. Aber ein "with" wie in
Delphi-Quellcode:
with X = TMySpecialType.Create(12, 'hallo', Self) do
  ShowMessage(X.AsString);
fände ich persönlich ne Super-Idee.


(ist aus Modula-3)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#26

AW: TFile, TDirectory vs. alte Funktionen

  Alt 2. Sep 2015, 16:27
Übrigens: with ist bäh
So, wie es Delphi aktuell macht, ja. Aber ein "with" wie in
Delphi-Quellcode:
with X = TMySpecialType.Create(12, 'hallo', Self) do
  ShowMessage(X.AsString);
fände ich persönlich ne Super-Idee.


(ist aus Modula-3)
Leider passt das nicht so ganz in Delphi wegen einigen Konzepten:

1. In Delphi müssen Variablen vordefiniert werden, es spart mir also nichtmal sonderlich viel Tiparbeit
2. In Delphi gibt es keinen kleineren Scope als eine Routine. Solch ein with sollte aber einen bilden, siehe using.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#27

AW: TFile, TDirectory vs. alte Funktionen

  Alt 2. Sep 2015, 16:51
Dann müsste man halt mit compiler magic arbeiten.

Delphi-Quellcode:
with x = aClass.aSubClass.AnotherOne do
  x.Attribut := <IrgendWas>;
->

 aClass.aSubClass.AnotherOne.Attribut := <IrgendWas>; Oder noch besser den Scope verfeinern.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#28

AW: TFile, TDirectory vs. alte Funktionen

  Alt 2. Sep 2015, 17:49
Zitat:
1. In Delphi müssen Variablen vordefiniert werden, es spart mir also nichtmal sonderlich viel Tiparbeit
Jain, denn wenn man es so sieht, dann kann Delphi sowas schon sehr lange, aber leider nicht in einem with.

siehe
Delphi-Quellcode:
try

except
  on E: Exception do
    ShowMessage(E.Message);
end;
entspricht in etwa
Delphi-Quellcode:
var
  E: Exception;

try

except
  if ExceptObject is Exception then begin
    E := Exception(ExceptObject);
    ShowMessage(E.Message);
  end;
end;
und Self ist auch sowas.


PS: with X = TMySpecialType.Create(12, 'hallo', Self) do ginge doch?
oder meint ihr with X := TMySpecialType.Create(12, 'hallo', Self) do

Und sowas wie "Self" für die temporäre "Variable" des WITH wäre auch schön, wenn man schon das X:= nicht selber angeben darf.

Delphi-Quellcode:
with Memo1, Memo1.Lines, Memo1.irgendwasanderes do
  Text := Value[1] + sonstwas;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 2. Sep 2015 um 17:55 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#29

AW: TFile, TDirectory vs. alte Funktionen

  Alt 2. Sep 2015, 18:56
Fakt ist, daß die Verwendung von with gewisse Risiken birgt, die zu schwer auffindbaren Fehlern führen können und deshalb tunlichst vermieden werden sollte.
Fakt ist, daß Programmieren gewisse Risiken birgt, die zu schwer auffindbaren Fehlern führen können und deshalb tunlichst vermieden werden sollte.
Uli Gerhardt

Geändert von uligerhardt ( 2. Sep 2015 um 18:59 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 10:52 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