Stärken und Schwächen von Object Pascal
-
- Beiträge: 1187
- Registriert: Mi 13. Dez 2006, 10:58
- OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
- CPU-Target: AMD A4-6400 APU
- Wohnort: Hamburg
Da schmeisst ihr was durcheinander. Es gibt in PASCAL einfache Typen, die vordefiniert sind. Dazu zählen;
- integer,
- string,
- boolean
usf.. PASCAL lässt einem aber auch die Freiheit einen selbst produzierten Typ, wie z.B. einen record einzuführen. Leitet man davon nun einen neuen Typ ab, wie z.B.:
TMyType = TMyrecord; // gilt auch für procedure oder function
dann wird daraus ein einfacher Typ, wie sie auch in der Sprache vorgegeben sind. Die "Dach"-Schreibweise für Pointer soll nur klarstellen, das es sich um einen Zeiger handelt. Konsequenterweise ist das nicht zwingend notwendig, deshalb fehlt das für Objekte.
- integer,
- string,
- boolean
usf.. PASCAL lässt einem aber auch die Freiheit einen selbst produzierten Typ, wie z.B. einen record einzuführen. Leitet man davon nun einen neuen Typ ab, wie z.B.:
TMyType = TMyrecord; // gilt auch für procedure oder function
dann wird daraus ein einfacher Typ, wie sie auch in der Sprache vorgegeben sind. Die "Dach"-Schreibweise für Pointer soll nur klarstellen, das es sich um einen Zeiger handelt. Konsequenterweise ist das nicht zwingend notwendig, deshalb fehlt das für Objekte.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.
(Ringelnatz)
(Ringelnatz)
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Konsequenterweise ist es eben erforderlich weshalb fpc das auch zwingend erwartet. Delphi handhabt das etwas flachsiger und versucht selbst zu erkennen was man hier will jedoch ist fraglich ob das wirklich in jeder Sittuation perfekt funktioniert.
Was du jetzt da mit den typen willst kann ich mir nicht erklären es ging um die Benutzung von Zeigern
Was du jetzt da mit den typen willst kann ich mir nicht erklären es ging um die Benutzung von Zeigern
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Beiträge: 1187
- Registriert: Mi 13. Dez 2006, 10:58
- OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
- CPU-Target: AMD A4-6400 APU
- Wohnort: Hamburg
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Nicht einfache Typen, sondern Pointer ich versteh trotzdem noh nicht wo sich jetzt jemand geirrt hat.
TMyType = TMyrecord; und TMyType ist danach kein "einfacher Typ" sondern immernoch ein Record was aber auch ein pascal Standarttyp ist ich weiss nicht wo du hier nen unterschied machst.
TMyType = TMyrecord; und TMyType ist danach kein "einfacher Typ" sondern immernoch ein Record was aber auch ein pascal Standarttyp ist ich weiss nicht wo du hier nen unterschied machst.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Beiträge: 1187
- Registriert: Mi 13. Dez 2006, 10:58
- OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
- CPU-Target: AMD A4-6400 APU
- Wohnort: Hamburg
Siehste Christian, genau da hast du offenbar etwas nicht verstanden. Nach der Deklaration im "type-Abschnitt" ist alles was du da deklariert hast ein einfacher Typ. Das gilt auch für Pointer und deshalb auch für Objekte. Das hat schon N. Wirth so postuliert eben damit man diese Typen auch als Funktions-Ergebnis zurückgeben kann.
Sieh mal unter Funktionen nach, die können nur einfache Typen zurückgeben und genau deshalb gibt es die Deklarationen unter type.
Sieh mal unter Funktionen nach, die können nur einfache Typen zurückgeben und genau deshalb gibt es die Deklarationen unter type.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.
(Ringelnatz)
(Ringelnatz)
-
- Beiträge: 1187
- Registriert: Mi 13. Dez 2006, 10:58
- OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
- CPU-Target: AMD A4-6400 APU
- Wohnort: Hamburg
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Und wo hab ich jetzt was falsch verstanden ? Du hast gesagt
TMyType = TMyrecord; // gilt auch für procedure oder function
dann wird daraus ein einfacher Typ,
Was quatsch ist da TMyrecord schon ein "einfacher Typ" ist.
und wenn du ne Klasse deklarierst ist das ne Klasse und ne Klasse ist ein Typ solange bis du sie einer Variable zuweist.
TMyType = TMyrecord; // gilt auch für procedure oder function
dann wird daraus ein einfacher Typ,
Was quatsch ist da TMyrecord schon ein "einfacher Typ" ist.
und wenn du ne Klasse deklarierst ist das ne Klasse und ne Klasse ist ein Typ solange bis du sie einer Variable zuweist.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
- 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:
Du machst beides.pluto hat geschrieben:Ich wusste gar nicht das man eine Klasse eine Variable zuweist oder meinst du Installisieren ?
also z.b.var:=TStringlist.Create
Code: Alles auswählen
TStringlist.Create
Code: Alles auswählen
var:=
Bei diesem Beispiel benötigst du keine explizite Variable zum Speichern des Objektes.
Code: Alles auswählen
.....
with TStringlist.Create do
begin
add('Zeile1');
add('Zeile2');
// hier etwas mit stringliste machen
free;
end;
.....
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).