[gelöst]Object? Class? Class(TObject)? Was jetzt?
Re: [gelöst]Object? Class? Class(TObject)? Was jetzt?
Generell ist das alles aber ganz schön verwirrend geworden. Nachdem Records auch Methoden bekommen haben, verschwimmt der Unterschied zu Objects und Classes. Und sogar ein profaner Integer hat über die Type-Helpers Pseudo-Methoden untergejubelt bekommen, so dass man "2.ToString" schreiben kann, statt "IntToStr(2)". Am besten man macht sich darüber nicht zuviele Gedanken...
Re: [gelöst]Object? Class? Class(TObject)? Was jetzt?
...ich bin schon ne geraume Zeit raus...wp_xyz hat geschrieben: Mi 19. Jan 2022, 11:22Am besten man macht sich darüber nicht zuviele Gedanken...

Allein, wenn ich die detailierte Ausführung von PascalDragon lese, frage ich mich: Hat er das alles so "freihand" aus dem Kopf geschrieben?
Nur gut, dass man in "Lazarus" auch Programme hin bekommt, ohne dieses geballte Wissen!
Gruß, Michael
- af0815
- Lazarusforum e. V.
- Beiträge: 6770
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: [gelöst]Object? Class? Class(TObject)? Was jetzt?
Bei 'PascalDragon' und 'FPK' glaube ich das sofort und ungeprüft.six1 hat geschrieben: Mi 19. Jan 2022, 11:52 Allein, wenn ich die detailierte Ausführung von PascalDragon lese, frage ich mich: Hat er das alles so "freihand" aus dem Kopf geschrieben?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 954
- Registriert: Mi 3. Jun 2020, 07:18
- OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
- CPU-Target: Aarch64 bis Z80 ;)
- Wohnort: München
Re: [gelöst]Object? Class? Class(TObject)? Was jetzt?
Das gleiche Beispiel funktioniert auch mit Klassen...Warf hat geschrieben: Mi 19. Jan 2022, 11:01 Das erlaubt sachen die mit Classes nicht möglich sind, z.B. die verwendung von Operatoren:Code: Alles auswählen
type TTestObject = object ... end; operator +(const A, B: TTestObject): TTestObject; ... var A, B, C: TTestObject; begin A := ... B := ... C := A + B; end.

Code: Alles auswählen
program tclsop;
{$mode objfpc}
type
TTestObject = class
f: LongInt;
constructor Create(aArg: LongInt);
destructor Destroy; override;
end;
constructor TTestObject.Create(aArg: LongInt);
begin
Writeln('Creating object');
f := aArg;
end;
destructor TTestObject.Destroy;
begin
Writeln('Freeing object');
inherited;
end;
operator+(aLeft, aRight: TTestObject): TTestObject;
begin
Result := TTestObject.Create(aLeft.f + aRight.f);
end;
var
a, b, c, d: TTestObject;
begin
a := TTestObject.Create(1);
b := TTestObject.Create(2);
c := a + b;
c.Free;
c := TTestObject.Create(3);
d := a + b + c;
d.Free;
c.Free;
a.Free;
b.Free;
end.
Code: Alles auswählen
Creating object
Creating object
Creating object
Freeing object
Creating object
Creating object
Creating object
Freeing object
Freeing object
Freeing object
Freeing object
'türlich. Denkst du etwa ich hab Zeit das nachzulesen?six1 hat geschrieben: Mi 19. Jan 2022, 11:52 Allein, wenn ich die detailierte Ausführung von PascalDragon lese, frage ich mich: Hat er das alles so "freihand" aus dem Kopf geschrieben?

Und als Compilerentwickler muss man letztlich ein paar Details der Sprache im Kopf behalten. Ich hab jetzt nicht alles aus dem FF parat (Wann ein konstanter String mit welchem Encoding angelegt wird muss ich meist nachschauen), aber im Großen und Ganzen...

Schön, dass man eine gewisse Reputation hat

FPC Compiler Entwickler
Re: [gelöst]Object? Class? Class(TObject)? Was jetzt?
Dir ist schon klar, dass du so etwas wie ein Pascal Gott bist, oder?

Also an dieser Stelle ein dickes Lob, dass es dir nie zuviel ist, derart ausführliche, detailierte Anworten zu schreiben!
Gruß, Michael
Re: [gelöst]Object? Class? Class(TObject)? Was jetzt?
Ditto! Ich schließe Dich in mein Nachtgebet ein 

-
- Beiträge: 2118
- Registriert: Di 23. Sep 2014, 17:46
- OS, Lazarus, FPC: Win10 | Linux
- CPU-Target: x86_64
Re: [gelöst]Object? Class? Class(TObject)? Was jetzt?
Ich bin mal davon ausgegangen man will nicht unbedingt kaputte Programme schreibenPascalDragon hat geschrieben: Mi 19. Jan 2022, 13:39 Das gleiche Beispiel funktioniert auch mit Klassen...Das Problem bei Klassen sind letztlich temporäre Variablen, die letztlich zu Speicherlecks führen:

Aber tatsächlich interessant ist das ja mit COM Interfaces wie in der GMP Unit. Aber gelenerell arbeite ich selbst viel zu wenig mit Interfaces weil der aufwand für Klassen(hirachien) zuerst die Interfaces zu machen und dann dazu die Klassen zu implementieren ist mir irgendwie immer zu viel. Auch wenn es sich hinten rum wahrscheinlich lohnen würde für das was man später dafür einspart
Was ich nur schade finde ist das Objects keine Class Operatoren können. Aber dafür gibts ja Advanced Records.
-
- Beiträge: 954
- Registriert: Mi 3. Jun 2020, 07:18
- OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
- CPU-Target: Aarch64 bis Z80 ;)
- Wohnort: München
Re: [gelöst]Object? Class? Class(TObject)? Was jetzt?
Dankesix1 hat geschrieben: Mi 19. Jan 2022, 16:31Dir ist schon klar, dass du so etwas wie ein Pascal Gott bist, oder?![]()
Also an dieser Stelle ein dickes Lob, dass es dir nie zuviel ist, derart ausführliche, detailierte Anworten zu schreiben!

FPC Compiler Entwickler