Forum: Programmieren allgemein
Delphi
by himitsu,
11. Sep 2012
Hier ist auch ein anderes Problem des WITH aufgefallen, denn beim Umbau fällt auf, daß der Scope vieles verschleift.
Und schwups, wurde beim Free etwas vergessen, was nun vermutlich gleich mal die ganze Form freigibt. :angle2:
PS: try kennen wohl Viele, wo dann ein try-finally-end draus wird, aber wer kennt z.B. try ? (vorausgesetzt, das Delphi ist halbwegs aktuell und es ist keine Starter)...
Forum: Programmieren allgemein
Delphi
by himitsu,
11. Sep 2012
Das WITH kann man gerne noch rausmachen, wenn man will.
procedure TFieldHelper.Sort(SortMode: TFieldSortMode);
begin
if (aSortMode = fsmDesc) or ((aSortMode = fsmAuto) and (DataSet.Sort = FieldName)) then
DataSet.Sort := FieldName + ' DESC'
else
DataSet.Sort := FieldName;
end;
Gut, ich hab hier noch einen Fehler drin, denn es müßte Column.Field.Sort; heißen und/oder man...
Forum: Programmieren allgemein
Delphi
by himitsu,
11. Sep 2012
procedure TFRM_Main.DBG_BuecherTitleClick(Column: TColumn);
begin
Column.Sort;
end;
type
TFieldSortMode = (fsmAuto, fsmAsc, fsmDesc);
TFieldHelper = class helper for TField
...
Forum: Programmieren allgemein
Delphi
by himitsu,
11. Sep 2012
Sort könnte auch eine globale Variable sein, oder ein Feld/Property von TFRM_Main.
Und was mag wohl passieren, wenn ADS_Buecher auch ein Column besitzt, bzw. in Zukunft mal Eines bekommt?
Forum: Programmieren allgemein
Delphi
by himitsu,
11. Sep 2012
with DM_Buecher.ADS_Buecher do
if sort = Column.Field.FieldName then
sort := Column.Field.FieldName + ' DESC'
else
sort := Column.Field.FieldName
Wenn alles* unterhalb des WITH zu der Klasse gehört, welche direkt im WITH gekapselt wurde, dann gibt es meistens keinerlei Probleme,
aber wie man bei Umstellungen auf XE2, oder sonstigen Umstellungen oder Erweiterungen von...
Forum: Programmieren allgemein
Delphi
by himitsu,
10. Sep 2012
Ich bezog meine Aussage ausschließlich auf diesen Code und da ist es nutzlos und verbessert das Codeverständnis auch nicht wirklich.
(with ... do anstatt einem .)
Und wie du schon sagtest, ist es eher hinderlich.
- keine Vorteile
- unnötiger Code, welcher den Lesefluß eher behindert
- beim Debuggen oftmals hinderlich
= Vorteile 0 und Nachteile (mindestens) 3
Forum: Programmieren allgemein
Delphi
by himitsu,
10. Sep 2012
Und es wurde ja schon erwähnt, aber WITH ist hier vollkommener Schwachsinn überflüssig und nutzlos.
Außerdem kann es nie schaden, wenn man abschließende ; verwendet. (vorallem wenn man Code gerne mal rumkopiert)
procedure TFRM_Main.edt_schnellsucheChange(Sender: TObject);
begin
dm_Buecher.ADS_Buecher.Locate('Titel', edt_schnellsuche.Text, );
end;
Und die Aussage, daß man Locate zum...