Delphi-PRAXiS
Seite 57 von 192   « Erste     747555657 585967107157     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Klatsch und Tratsch (https://www.delphipraxis.net/34-klatsch-und-tratsch/)
-   -   Was nervt euch so, während der Programmierung oder so allgemein (https://www.delphipraxis.net/152540-nervt-euch-so-waehrend-der-programmierung-oder-so-allgemein.html)

himitsu 30. Okt 2011 02:14

AW: Was nervt euch so, wärend der Programmierung oder so allgemein
 
Also, was nun echt mal nicht geht:

Delphi hat ein Jahr 2000-Umstellungsproblem :shock:


OK, eigentlich ist es nur ein Sommer-/Winterzeitumstellungsproblem.
Schön daß da die einzige Lösung darin besteht Delphi neu zu Starten, denn alles zu speichern/überschreiben half auch nix. :evil:

Denn als es grade den Eingabefokus zurückbekam, machte es das, was bei einer externen Änderung passiert ... es meckert "Da wurde was verändert. Soll ich es neu laden"?
Das ist ja eigentlich nicht schlimm, aber daß macht es grade bei allen geöffneten Dateien (sind schon ein paar) und natürlich auch bei denen, welche eigentlich nicht verändert wurden.
Und ganz besonders besch*** ist, daß es das nun jedes Mal macht wenn es den Fokus zurückbekommt, da es sich das [Nein] nicht merkt, bei der noch nicht gespeicherten Projektgruppendatei (groupproj).



Und weil Delphi so intelligent ist, merkt es nicht, daß schon soein (hier sogar das Gleiche) modales Fenster auf ist ... eine Alt-Tab-Orgie und man muß erstmal tausende "soll ich laden"-Fenster zumachen. :wall:

jaenicke 30. Okt 2011 07:16

AW: Was nervt euch so, wärend der Programmierung oder so allgemein
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von himitsu (Beitrag 1133444)
Zumindestens hatte man in XE schon eine abfrage "Wollen sie wirklich formatieren?" eingebaut, was mein aktuelles 2010 noch nicht kennt. :cry:

Bist du sicher? Hast du bei dir nicht zufällig aus Versehen die Checkbox aktiviert "nicht mehr nachfragen"? Das kannst du in den Optionen sehen, wenn es das da schon gab sollte das dort so oder ähnlich aussehen:

Anhang 35459

Zitat:

Zitat von himitsu (Beitrag 1133444)
Was auf jeden Fall nervt, ist die Tlanungsphase zu einem Programm/Code ... da geht soooo viel sinnlose Zeit drauf, bevor man mit dem Proggen endlich anfangen kann :?

Noch nerviger ist es aber ohne Plan heranzugehen und nach ein paar Wochen zu merken, dass das Konzept so doch nicht so gut funktioniert. :mrgreen:

himitsu 30. Okt 2011 08:44

AW: Was nervt euch so, wärend der Programmierung oder so allgemein
 
Liste der Anhänge anzeigen (Anzahl: 1)
Jupp, das war eines der zwei Megafeatures, weswegen man unbedingt auf XE upgraden mußte. (abgesehn von SVN und Co.)
Anhang 35460

Es war scheinbar noch genug anderen passiert, daß sie bei Strg+D das D manchmal verfehlten.
Das Ding ist ja nur so von oftgenutzten Tasten umgeben > Strg+E Strg+R Strg+F Strg+G Strg+V Strg+C Strg+X Strg+S ...

himitsu 31. Okt 2011 21:08

AW: Was nervt euch so, wärend der Programmierung oder so allgemein
 
..., daß ich jetzt noch ganz schnell die letzen "sicheren" Delphi-Tage-Pfefferminz-Dinger loswerden muß.

Ich wußte ja nicht daß die ein Verfallsdtum haben, aber ich sah jetzt grade noch, daß diese morgen früh verfallen werden :shock:


PS: Warum haben wir keinen Witzethread?

Zwei Männer gehen von einer Halloweenparty nach Hause und beschließen, die Abkürzung über den Friedhof zu nehmen, schließlich passt das gerade richtig in die Stimmung. Mitten zwischen den Gräbern hören sie plötzlich ein Geräusch aus dem Dunklen kommen: Tock-tock-tock, tock-tock-tock... Zitternd vor Furcht schleichen sie weiter und finden schliesslich einen alten Mann, der mit Hammer und Meißel einen Grabstein bearbeitet. Nachdem der erste sich wieder leicht erholt hat, fragt er den Mann: "Alter Mann, Sie haben uns fast zu Tode erschreckt... wir dachten schon, Sie wären ein Geist! Was arbeiten Sie denn hier mitten in der Nacht?"
"Diese Idioten!" murmelt der alte Mann, "die haben meinen Namen falsch geschrieben..."
.

Mit der ganzen Totenstimmung hier, die letzte Zeit über, vergeht einem ja fast der Appetit beim Leichenschmaus.

mquadrat 2. Nov 2011 08:15

AW: Was nervt euch so, wärend der Programmierung oder so allgemein
 
Feature-Creap ohne dazu passende Anpassung von Budget und Termin :x

himitsu 2. Nov 2011 14:45

AW: Was nervt euch so, wärend der Programmierung oder so allgemein
 
Extrem nerven tut es, daß _AddRef und _Release nie als virtual deklariert sind. (QueryInterface ist es allerdings fast immer)

Wie soll man denn da nachträglich eine Referenzzählung implementieren, wo es vorher keine gab (diese Funktionen machen nichts), bzw. wie soll man da das Verhalten ändern können.
:cry:

TComponent-Nachfahren wollte ich mit einer Referenzzählung ordentlichen versehnen, welche VCL-Object-Verwaltung und Interface-Referenzzählung kombiniert.
Die einzige Lösung ist da umständlich(er) ein weiteres Interface (IVCLComObject) dahinter zu schalten.


Ach ja und es kotzt uch an, wenn man an fertige (fast passende) Implementationen nicht rann kommt, da der gewünschte Typ irgenwo in einem Implementation-Teil versteckt deklariert ist. :wall:

Stevie 2. Nov 2011 17:41

AW: Was nervt euch so, wärend der Programmierung oder so allgemein
 
Zitat:

Zitat von himitsu (Beitrag 1134042)
Extrem nerven tut es, daß _AddRef und _Release nie als virtual deklariert sind. (QueryInterface ist es allerdings fast immer)

Wie soll man denn da nachträglich eine Referenzzählung implementieren, wo es vorher keine gab (diese Funktionen machen nichts), bzw. wie soll man da das Verhalten ändern können.

Überschreib die Methoden und setz in die Klassendefinition nochmals IInterface. Dann werden die 3 Methoden aus dieser Klasse benutzt.

Meflin 2. Nov 2011 17:43

AW: Was nervt euch so, wärend der Programmierung oder so allgemein
 
Digital River. Nie wieder!

himitsu 2. Nov 2011 19:57

AW: Was nervt euch so, wärend der Programmierung oder so allgemein
 
Hi Stevie,

seit man aber Interfaces wieder in Objekte zurückcasten kann (IInterfaceComponentReference sei Dank ... die haben mir meine Idee geklaut :cry:),
ist dieses nicht mehr sicher, denn wenn man dann auf das ältere Klasse castet und dann wieder in ein Interface, dann wird das Interface des Vorfahren und nicht das Neue verwendet.

Und IInterfaceComponentReference zu überschreiben hatte keinerlei Wirkung, sonst hätt' ich da einfach NIL zurückgegeben. :twisted:

Delphi-Quellcode:
type
  TMyClass1 = class(TObject, IInterface)
    function QueryInterface(const IID: TGUID; out Obj): HResult; virtual; stdcall;
    function _AddRef: Integer; stdcall;
    function _Release: Integer; stdcall;
  end;

  TMyClass2 = class(TMyClass1, IInterface)
    function QueryInterface(const IID: TGUID; out Obj): HResult; override; stdcall;
    function _AddRef: Integer; stdcall;
    function _Release: Integer; stdcall;
  end;

procedure TForm1.FormCreate(Sender: TObject);
var
  i1, i2, i3, i4, i5, i6: IInterface;
  o5: TMyClass1;
  o6: TMyClass2;
begin
  Memo1.Lines.Add('');
  Memo1.Lines.Add('o6 := TMyClass2.Create / i6 := TMyClass2(o6) as IInterface');
  o6 := TMyClass2.Create;
  i6 := o6 as IInterface;
  i6._AddRef;

  Memo1.Lines.Add('');
  Memo1.Lines.Add('o5 := TMyClass2.Create; / i5 := TMyClass1(o5) as IInterface;');
  o5 := TMyClass2.Create;
  i5 := o5 as IInterface;
  i5._AddRef;

  Memo1.Lines.Add('');
  Memo1.Lines.Add('i1 := TMyClass1.Create;');
  i1 := TMyClass1.Create;
  i1._AddRef;

  Memo1.Lines.Add('');
  Memo1.Lines.Add('i2 := TMyClass2.Create;');
  i2 := TMyClass2.Create;
  i2._AddRef;

  Memo1.Lines.Add('');
  Memo1.Lines.Add('i3 := TMyClass2(i2) as TMyClass2;');
  i3 := i2 as TMyClass2;
  i3._AddRef;

  Memo1.Lines.Add('');
  Memo1.Lines.Add('i4 := TMyClass2(i2) as TMyClass1;');
  i4 := i2 as TMyClass1;
  i4._AddRef;

  Memo1.Lines.Add('');
end;

{ TMyClass1 }

function TMyClass1.QueryInterface(const IID: TGUID; out Obj): HResult;
begin
  Form1.Memo1.Lines.Add('TMyClass1.QueryInterface');
  if GetInterface(IID, Obj) then
    Result := 0
  else
    Result := E_NOINTERFACE;
end;

function TMyClass1._AddRef: Integer;
begin
  Form1.Memo1.Lines.Add('TMyClass1._AddRef');
end;

function TMyClass1._Release: Integer;
begin
  Form1.Memo1.Lines.Add('TMyClass1._Release');
end;

{ TMyClass2 }

function TMyClass2.QueryInterface(const IID: TGUID; out Obj): HResult;
begin
  Form1.Memo1.Lines.Add('TMyClass2.QueryInterface');
  if GetInterface(IID, Obj) then
    Result := 0
  else
    Result := E_NOINTERFACE;
end;

function TMyClass2._AddRef: Integer;
begin
  Form1.Memo1.Lines.Add('TMyClass2._AddRef');
end;

function TMyClass2._Release: Integer;
begin
  Form1.Memo1.Lines.Add('TMyClass2._Release');
end;

end.




o6 := TMyClass2.Create / i6 := TMyClass2(o6) as IInterface
TMyClass2.QueryInterface
TMyClass2._AddRef
TMyClass2._AddRef

o5 := TMyClass2.Create; / i5 := TMyClass1(o5) as IInterface;
TMyClass1.QueryInterface   // ist QueryInterface nicht virtual kommt hier TMyClass1.QueryInterface rause
TMyClass2._AddRef
TMyClass2._AddRef

i1 := TMyClass1.Create;
TMyClass1._AddRef
TMyClass1._AddRef

i2 := TMyClass2.Create;
TMyClass2._AddRef
TMyClass2._AddRef

i3 := TMyClass2(i2) as TMyClass2;
TMyClass2.QueryInterface
TMyClass2._AddRef
TMyClass2._AddRef

i4 := TMyClass2(i2) as TMyClass1;
TMyClass2.QueryInterface
TMyClass1._AddRef
TMyClass1._AddRef

TMyClass2._Release
TMyClass2._Release
TMyClass1._Release
TMyClass2._Release
TMyClass2._Release
TMyClass1._Release

haentschman 2. Nov 2011 20:26

AW: Was nervt euch so, wärend der Programmierung oder so allgemein
 
@himi...

wenn wir hier einen Counter hätten, würdest du den genervten Record halten... :stupid: Paß auf deine Gesundheit auf, damit nicht in ein paar Jahren ein Bypaß dich verschönert :zwinker: Man muß sich nicht über alles aufregen. Manchmal einfach nur akzeptieren... :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:09 Uhr.
Seite 57 von 192   « Erste     747555657 585967107157     Letzte »    

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