AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Compilerfehler, aber wie Abhilfe schaffen

Ein Thema von skoschke · begonnen am 4. Apr 2019 · letzter Beitrag vom 7. Apr 2019
Antwort Antwort
Seite 2 von 2     12   
Rudy Velthuis

Registriert seit: 10. Sep 2011
Ort: Gelsenkirchen
42 Beiträge
 
Delphi 10.3 Rio
 
#11

AW: Compilerfehler, aber wie Abhilfe schaffen

  Alt 6. Apr 2019, 23:11
Etliche Proceduren, bei denen Objekte als const deklariert sind, die dann aber innerhalb der Procedure beschrieben werden!

Da kommt natürlich "der linken Seite kann nichts zugewiesen werden"!
Das scheint aber in XE6 noch kompilierbar gewesen zu sein, oder gibt es da auch noch einen Schalter der das zulässt?
Nein. Aber normalerweise kann man ein Object als const-Parameter übergeben, wenn man innerhalb der Methode dann nur seine Properties ändert. Was man nicht ändern kann (und auch niemals tun sollte, wenn der Parameter nicht als var oder out deklariert ist) ist, dem Parameter innerhalb der Methode ein neues Objekt zuzuweisen. Das ist auch dann ein konzeptioneller Fehler, wenn der Parameter ohne const deklariert wurde.
Es ergibt aber selten Sinn, Objekte als const zu übergeben, dam man immer noch die Methoden aufrufen kann, und immer noch Properties setzen kann. Der Zeiger (die Objektreferenz) ist const, nicht das Objekt selber.

Zitat:
Ich finde es übrigens sehr bedenklich, wenn eine DLL Funktionen exportiert, die Delphi-spezifische Datentypen wie TStrings verwenden. Sowas funktioniert normalerweise nicht ohne massive Probleme.
Genau. Wer Englisch lesen kann sollte wirklich mal meinen Artikel lesen: DLL dos and don'ts. Der zeigt, was man alles machen kann und soll und vor allem, nicht machen sollte.
Rudy Velthuis
  Mit Zitat antworten Zitat
Rudy Velthuis

Registriert seit: 10. Sep 2011
Ort: Gelsenkirchen
42 Beiträge
 
Delphi 10.3 Rio
 
#12

AW: Compilerfehler, aber wie Abhilfe schaffen

  Alt 6. Apr 2019, 23:26
Etliche Proceduren, bei denen Objekte als const deklariert sind, die dann aber innerhalb der Procedure beschrieben werden!

Da kommt natürlich "der linken Seite kann nichts zugewiesen werden"!
Das scheint aber in XE6 noch kompilierbar gewesen zu sein, oder gibt es da auch noch einen Schalter der das zulässt?
Nein. Aber normalerweise kann man ein Object als const-Parameter übergeben, wenn man innerhalb der Methode dann nur seine Properties ändert. Was man nicht ändern kann (und auch niemals tun sollte, wenn der Parameter nicht als var oder out deklariert ist) ist, dem Parameter innerhalb der Methode ein neues Objekt zuzuweisen. Das ist auch dann ein konzeptioneller Fehler, wenn der Parameter ohne const deklariert wurde.
Es ergibt keinen Sinn, Objekte als const zu übergeben. Nur die Objktreferenz ist dann const, nicht die Properties und Methoden. Sowas wie const-Methoden wie in C++ gibt es für Delphi nicht.

Zitat:
Ich finde es übrigens sehr bedenklich, wenn eine DLL Funktionen exportiert, die Delphi-spezifische Datentypen wie TStrings verwenden. Sowas funktioniert normalerweise nicht ohne massive Probleme. DLL und Anwendung müssen auf jeden Fall mit der gleichen Delphi-Version kompiliert werden und sie müssen einen gemeinsamen Memory-Manager verwenden (z. B. in dem man beide mit run-time packages baut, und dann kann man auch gleich eine Package statt einer DLL erzeugen). Wenn man eine DLL haben will, die unabhängig von der Delphi-Version des Hostprogrammes ist und eventuell sogar von anderen Programmiersprachen aus nutzbar ist darf man nur API-Level Datentypen verwenden, oder zumindestens COM-kompatible.
[/QUOTE]

Wer Englisch lesen kann, sollte meinen Artikel über DLLs lesen: "DLL dos and don'ts". Da wird beschrieben, was man beim Schreiben von DLLs machen kann und sollte und vor allem, was man nicht machen sollte. Delphi-spezifische Typen sollte man tunlichst vermeiden.
Rudy Velthuis
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#13

AW: Compilerfehler, aber wie Abhilfe schaffen

  Alt 7. Apr 2019, 00:10
Zitat:
Delphi-spezifische Typen sollte man tunlichst vermeiden.
Außer man schreibt die Unit für sich selber nur für Delphi.
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
702 Beiträge
 
Delphi 12 Athens
 
#14

AW: Compilerfehler, aber wie Abhilfe schaffen

  Alt 7. Apr 2019, 12:28
Zitat:
Delphi-spezifische Typen sollte man tunlichst vermeiden.
Außer man schreibt die Unit für sich selber nur für Delphi.
Selbst das funktioniert nur, wenn man DLL und Hostprogramm mit der gleichen Delphi-Version und Sharemem baut.
Peter Below
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:01 Uhr.
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