Thema: Delphi Vorteile von Delphi

Einzelnen Beitrag anzeigen

Hubble

Registriert seit: 13. Dez 2005
13 Beiträge
 
#73

Re: Vorteile von Delphi

  Alt 15. Dez 2005, 09:50
Zitat von sakura:
Zitat von Hubble:
mäßiges exception handling
Stimmt imo nicht, aber wenn man nicht weiß, wann man try..except und wann try...finally nutzt, dann mag man das so sehen.
Du hast Recht. Das reine Expception Handling ist dem in C++ ähnlich. Aber nicht in Verbingung mit Objekten.

Hier nochmal im Klartext und für alle:
C:
void IrgendeineFunktion()
{
CMeinObjektTyp A( "irgendein Text");

EinFunktionsaufrufmitexception();
}

Es ist nicht möglich diesen übersichtlichen Einzeiler auch in Delhpi zu schreiben.
In Delhpi brauche ich alleine dafür
var
A:TMeinObjektTyp ;
...
A:=TMeinObjektTyp.Create(..);
EinFunktionsaufrufmitexception();
freeannil(A);

Das sind Minimum 3 Zeilen.
Absolutes minimum und falls ich ignoriere, daß die Instanz A in Delphi nicht freigeben wird und in C wird dies automatisch passiert.

@alzaimar ich nehme an du meinst ein garbage collector. Das hat absolut nix damit zu tun. Es gibt keine schnelle Möglichkeit in Delhi so ein Objekt zu erzeugen. Das Ding landet in Delhpi immer auf dem Heap. Und wenn da ein kleiner Fehler passiert weil immer wieder ein Objekt nicht freigegeben wird ist den Speicher bald voll.

Natürlich würde ich auf den Stack keine großen Objekte ablegen welche für die ganze Laufzeit des Programms zur Verfürgung stehen müssen.
Aber sehr oft brauch man diese Objekte eben nur innerhalb dieser Funktion.
Wer diesen Punkt nicht zumindest als sehr ungünstig in Delhpi anerkennt ist für mich diskussionsfäig.

Also braucht man in Delphi zwingend einen try except block, der alle Eventualitäten abhandelt.
In C ist dies in dieser Form nicht notwendig.
Ich habe im Moment das Problem, das bei einigen hundert Buttons in meinem Projekt ein Lock (wie in meinem Beipiel auf Seite 4 beschieben) gemacht werden müßte.
In C währe dies jemeils ein Einzeiler in der Ersten Zeile jedes ClickEvents.
In Delphi sind dies jeweils mindestens 7 Zeilen an 3 Stellen des Events.
Ich weiß das hätte man voher besser coden müssen aber ich hab das Projekt eben so übernommen.


Zitat von sakura:
Btw, Dein Bespiel mit automatischer Objektfreigabe kann man auch in Delphi 6 bauen.
Gut dann zeig mir den Einzeiler.


Zitat von sakura:
Zitat von Hubble:
schlechte Pointernutzung
Wieso? Nur weil der Compiler hin und wieder weiß, womit er es zu tun hat und einem einige Dinge verzeiht... Was ist daran so schlecht.
Ich Programmiere oft Hardwarenah und dann gibts eben einen Pointer zurück.
Ist eventuell Geschmackssache aber in C hab ich alle Möglichkeiten damit in Delhpi nicht.
Sonst versuche ich auch Pointer so wenig wie möglich zu nutzen.


Zitat von sakura:
Zitat von Hubble:
VCL nicht Threadfest
Ist WinForms auch nicht, und das ist richtig neu Da muss man auch aufpassen wer wann welche Control manipulieren darf. Es ist aber, zugegeben, schon viel eleganter gelöst.
Jo


Zitat von sakura:
Zitat von Hubble:
Objekte können nur mit .create erzeugt werden und wieder gelöscht werden
Mit Create löscht man keine Objekte. Aber ich denke mal, Du hast Dich hier beim Schreiben überrannt. Und wie gesagt, wer sich mit Delphi auskennt, der weiß auch, wie man die von Dir aufgeführte Limitierung umgeht. Zugegeben, der Ansatz über den Stack hätte Delphi auch nicht schlecht getan, aber dann wiederum gibt es auch Gegenargumente
Ja auch ich lösche Objekte in Delphi mit free.
Aber ich kann eben auch wie oben beschrieben ein Objekt als Einzeiler erzeugen nutzen und danach Ignorieren weil er sich am Ende der Funktion unter allen Umständen selber löscht.



Zitat von sakura:
Zitat von Hubble:
Klassen und Ausprogrammierung sind immer getrennt
Das ist die strukturierte Sprache Pascal und einfach eine Glaubenssache. Da kann man nicht diskutieren - so ist es einfach
Grundsätzlich ja, aber:
Wenn das ne kleine Hübesche Klasse ist dann schreibe ich eben lieber den Einzeiler direkt in die Deklaration und nicht erst 700 Zeilen später.
Außderdem kann ich kleine Klassen (z.B. Miniparser) direkt über der Funktion als 10 Zeiler im .cpp File implementieren.
In Delphi lass ich dass und schreib mir lieber ein ungekapselte Funktion die zwar das gleiche kann, aber unangenehmer ist im Handling.

Beispiel mitten im cpp file :

....
class CZeilenParser
{
public:
CZeilenParser(char* Text){ /*machwasmittext;*/}

int gibtDurchschitt(){return (Max-Min)/2;}
private:
int Min,Max;
};
void NeKlasse::neFunktion(char* geparsterText)
{
CZeilenParser P(geparsterText);
P.gibtDurchschitt();
...

Fertig:
Natürlich geht in Delhpi auch irgendwie. Ist aber umständlicher kostet mehr Zeit und Übersicht.
Natürlich nur für den Fall das diese Klasse ausschließlich in dieser Funktion verwendet wird.
Ein mehrfach verwendetes Objekt würde ich nie mitten in den C++ Code hocken.


Zitat von sakura:
Zitat von Hubble:
nicht ausgereifte Projektverwaltung
Die ist bestimmt noch nicht alles was es sein könnte, aber schon viel besser in der aktuellen Version.
Mein Hauptproblem mit der Projektverwaltung ist das es keine Ordner gibt. Alle 100 Files liegen in einer Liste. In VCC kann ich Unterordner machen.

Zitat von sakura:
Zitat von Hubble:
keine STL
Nun gut, und warum brauche ich die in Delphi - oder anders, was machst Du mit der, was Du in Delphi nicht tun kannst.
Man merkt das du noch nie die Vorzüge der STL genossen hast.

z.B.
eine Map mit 456.456 Nachnamen aus Holland. Die haben alle eine Nummer. Und ich möchte diese Nummer mit Angabe des Namens herausfinden (ohne Datenbank)

C:
map<string,int>Nachnamen; // Die Map
Nachnamen["Van Deutz"]=154568; // Einfügen der Namen
Nachnamen["Van Irgendwer"]=1568; // und noch 456.454 andere Van's ....

//Jetzt mach ich einfach
int NrvonD=Nachnamen["Van Deutz"];
// Und schon hab ich mit der Schnelligktiet von Ln(n) Vergleichen die Nummer von "Van Deutz";

Mir ist keine auch nur annähernd so elegante und schnelle Lösung in Delhpi bekannt.
Natürlich kann ich anstatt des Strings auch ein beliebiges anderes Objekt verwenden.


Zitat von sakura:
Zitat von Hubble:
keine echten Templates
Stimmt, aber kommt Zeit kommen Lösungen. Und da habe ich schon perverse für gesehen
Ja es werden Lösungen kommen. Dieser Punkt ist auch nicht so wichtig.

Zitat von sakura:
Zugegeben, ich liebe Delphi, aber ich diskutiere auch gerne die Für und Wider von Delphi. Also, ich warte auf Deine Antworten
Diskutiere auch gerne und wäre dankbar wenn Ihr mich von Delphi überzeugt. Ich sehe ja auch die Vorteile, diese sind für mich aber nur eingeschränkt nutzbar.
Und egal was passiert ich werden die nächste Zeit noch Delhpi nutzen müssen.

Hubble
  Mit Zitat antworten Zitat