Initialisierung von Variablen / Feature-Frage

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
RSE
Beiträge: 462
Registriert: Mi 30. Jul 2008, 13:11
OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
CPU-Target: 32Bit
Kontaktdaten:

Initialisierung von Variablen / Feature-Frage

Beitrag von RSE »

Wir haben ja letztens festgestellt, dass Variable an diversen Stellen initialisiert werden. Da dürfte es doch für den resultierenden Code egal sein, mit welchem Wert initialisiert wird. Wenn man allerdings an so einer Stelle lieber einen anderen Initialisierungswert haben möchte, dann muss man ihn im Nachhinein zuweisen, was letztlich zu zwei initialisierenden Zuweisungen im Code führt. Effizienter wäre es doch, wenn die Sprache ObjectPascal zumindest überall dort, wo Variablen immer initialisiert werden, erlaubt, einen eigenen Initialisierungswert im folgenden Format anzugeben:

Code: Alles auswählen

MyInt: Integer = 3;
Das dürfte doch nirgends zu Problemen für den Parser kommen, oder? Warum ist das eigentlich nicht überall so erlaubt?
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!

RSE
Beiträge: 462
Registriert: Mi 30. Jul 2008, 13:11
OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
CPU-Target: 32Bit
Kontaktdaten:

Re: Initialisierung von Variablen / Feature-Frage

Beitrag von RSE »

Falls weiterhin keiner was dazu zu sagen hat, würde ich in Erwägung ziehen das als Feature-Request in Mantis einzutragen.
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!

Benutzeravatar
theo
Beiträge: 11005
Registriert: Mo 11. Sep 2006, 19:01

Re: Initialisierung von Variablen / Feature-Frage

Beitrag von theo »

RSE hat geschrieben:Falls weiterhin keiner was dazu zu sagen hat, würde ich in Erwägung ziehen das als Feature-Request in Mantis einzutragen.
Ich kann dein Ansinnen ja nachvollziehen.
Aber ehrlich gesagt sehe ich den praktischen Nutzen nicht so wirklich.
Wie weit soll es denn gehen? fList:TList=TList.Create(); ?

Ich glaube das Verhalten ist so stein-alt, dass es wohl einen Grund dafür geben muss.
Bei globalen Variablen geht's ja.
Kannst ja mal auf der FPC Mailing-Liste nachfragen, warum das so ist. fpc-pascal: http://www.freepascal.org/maillist.var" onclick="window.open(this.href);return false;

Ich sehe wenig Chancen auf Umsetzung.

RSE
Beiträge: 462
Registriert: Mi 30. Jul 2008, 13:11
OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
CPU-Target: 32Bit
Kontaktdaten:

Re: Initialisierung von Variablen / Feature-Frage

Beitrag von RSE »

Das macht natürlich genau wie bei den globalen Variablen nur für einfache (unstrukturierte) Datentypen Sinn. Also für Ordinale Typen, Real-Typen und Boolean. Ich denke man könnte evtl. sogar den Code von den globalen Variablen wieder verwenden, mit Anpassungen natürlich, aber es muss vielleicht eben nicht alles neu gecodet werden, was die Sache sicherlich schon wesentlich vereinfacht.
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!

Benutzeravatar
theo
Beiträge: 11005
Registriert: Mo 11. Sep 2006, 19:01

Re: Initialisierung von Variablen / Feature-Frage

Beitrag von theo »

Ja, nur glaube ich, dass nach deutlich über einem Jahrzehnt Delphi die Frage wohl schon oft aufgetaucht und aus einem Grund verworfen wurde.
Deshalb -> MailingList fragen.

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Re: Initialisierung von Variablen / Feature-Frage

Beitrag von monta »

Dann aber auch bitte noch bei lokalen Variablen das Create automatisch machen ;)

Aber im ernst, es wäre zwar nett, aber es wird jemand mit Delphikompatibilität kontern und damit kann man alles erschlagen.
Johannes

RSE
Beiträge: 462
Registriert: Mi 30. Jul 2008, 13:11
OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
CPU-Target: 32Bit
Kontaktdaten:

Re: Initialisierung von Variablen / Feature-Frage

Beitrag von RSE »

@theo:
Ich habe sehr schlechte Erfahrungen mit Mailinglisten gemacht. Unter der Annahme, dass du auf dieser Mailingliste bereits vertreten bist, könntest du das für mich übernehmen?

@monta
Create klingt so nach Objekten... Es ging lediglich um einfache, unstrukturierte Datentypen! Und wenn die Variable, wie bei lokalen der Fall, nicht initialisiert werden, entsteht auch keine unnötige doppelte Initialisierung, wenn man nicht den Standardwert zum Initialisieren braucht. Von daher würde es bei lokalen Variablen "nur" der Übersichtlichkeit dienen. An den Stellen, wo immer initialisiert wird, würde es zusätzlich der Effizienz dienen. Natürlich wäre es schön, dann gleich überall einheitlich diese Möglichkeit zu haben ;-)

Delphi-Code könnte so genauso ausgeführt werden, nur ist dann der FPC-Code nicht mehr Delphi-kompatibel. Dazu gibt es aber den Delphi-Modus, der z.B. weiterhin diese Syntax verbieten könnte. In puncto Delphi-Kompatibilität sehe ich somit keinerlei Probleme. Multiple Inheritance ist da ein viel größerer "Eingriff in die Kompatibilität" gewesen ;-)
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!

Benutzeravatar
theo
Beiträge: 11005
Registriert: Mo 11. Sep 2006, 19:01

Re: Initialisierung von Variablen / Feature-Frage

Beitrag von theo »

RSE hat geschrieben:@theo:
Ich habe sehr schlechte Erfahrungen mit Mailinglisten gemacht. Unter der Annahme, dass du auf dieser Mailingliste bereits vertreten bist, könntest du das für mich übernehmen?
:lol:
Auf fpc-pascal bin ich nicht angemeldet. Mich kratzt's wie gesagt auch nicht so besonders.

RSE
Beiträge: 462
Registriert: Mi 30. Jul 2008, 13:11
OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
CPU-Target: 32Bit
Kontaktdaten:

Re: Initialisierung von Variablen / Feature-Frage

Beitrag von RSE »

theo hat geschrieben:Auf fpc-pascal bin ich nicht angemeldet.
Findet sich jemand anders?
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Re: Initialisierung von Variablen / Feature-Frage

Beitrag von monta »

Naja, da doch einiges mit Delphi-Kompatibilität begründet wird, bin ich persönlich mir nicht so sicher, ob man wirklich nur den Delphi-Mode zu Delphi kompatibel halten will und die beiden Modes so weit voneinander entfernen möchte.
Schau dir mal die User Cahnges zu 2.4 an, da steht bei einigen Delphi als Begründung.

Und ja, ich meinte create von Objekten. Weil, wenn ich das weiter spinne, kann ich ja auch sagen, wieso soll ich dien Stringliste, wenn ich sie als lokale Variable deklariere auch noch von Hand erstellen, das könnte ja auch automatisch gehen. Wenn ich sie nicht haben will, brauch ich sie ja nicht deklarieren. Aber das war auch nicht zu 100% ernst gemeint ;)
Johannes

RSE
Beiträge: 462
Registriert: Mi 30. Jul 2008, 13:11
OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
CPU-Target: 32Bit
Kontaktdaten:

Re: Initialisierung von Variablen / Feature-Frage

Beitrag von RSE »

Also ich würde es trotzdem probieren. Falls sich jemand findet, dann kann er ja mal auf der Mailingliste fragen, ob es außer der Delphi-Kompatibilität einen triftigen Grund dagegen gibt, den Initialisierungswert selbst festzulegen. Wenn sich niemand findet, oder dort auch keiner einen triftigen Grund weiß, werde ich diesen Feature-Request im Mantis eintragen.
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Re: Initialisierung von Variablen / Feature-Frage

Beitrag von monta »

du kannst natürlich auch mal unter #fpc auf Freenode nachfragen.

Generell wäre ich auch dafür, somal es bei globalen Vars ja geht.
Johannes

RSE
Beiträge: 462
Registriert: Mi 30. Jul 2008, 13:11
OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
CPU-Target: 32Bit
Kontaktdaten:

Re: Initialisierung von Variablen / Feature-Frage

Beitrag von RSE »

monta hat geschrieben:Generell wäre ich auch dafür, somal es bei globalen Vars ja geht.
Eben drum.

Ich bräucht für den IRC bräucht ich noch ein kleines bissl Hilfe. Ich habe damit bisher noch nix zu tun gehabt, habe aber schon mitbekommen, dass du hier ein Applet laufen hast, welches automatisch zum Channel für dieses Forum connected. Kommt man damit auch in den #fpc-Channel? Ansonsten ist die IRC-Alternative eine Top-Idee von dir gewesen ;-)
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Re: Initialisierung von Variablen / Feature-Frage

Beitrag von monta »

ja, kommst du.

einfach folgendes eingeben:

Code: Alles auswählen

/join #fpc
damit öffnet sich dann ein neuer Tab zum FPc-Chat. Das ist eigentlich alles, was man dazu braucht. Außer Java fürs Applet ;) )
Johannes

RSE
Beiträge: 462
Registriert: Mi 30. Jul 2008, 13:11
OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
CPU-Target: 32Bit
Kontaktdaten:

Re: Initialisierung von Variablen / Feature-Frage

Beitrag von RSE »

Okay, ich rede gerade mit denen im #fpc-Channel. Die initialisierung der Membervariablen in Klassen mit Nullwerten resultiert daher, dass für die Instanzierung eines Objektes der erforderliche Speicherplatz zuerst mit Nullen überschrieben wird. Schwups, ist alles mit 0.0, false oder nil initialisiert. Eine Initialisierung mit eigenen Werten würde da ganz andere Eingriffe bedeuten. Ich soll trotzdem einen Feature-Request machen.
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!

Antworten