Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Übergabe anderer DatenTypen verhindern (https://www.delphipraxis.net/198784-uebergabe-anderer-datentypen-verhindern.html)

EWeiss 29. Nov 2018 11:03


Übergabe anderer DatenTypen verhindern
 
Bsp.
Delphi-Quellcode:
function InitSkin(hMain: HWND; const skConfigFile: String; Maximize: Bool; Minimize: Bool): Bool;


Das const für skConfigFile habe ich hinzugefügt um zu verhindern das ein anderer DatenTyp übergeben werden kann.
Dachte ich zumindest.. funktioniert aber nicht.

Warum?
Ich kann immer noch WideString, PWideChar als DatenTyp deklarieren und übergeben.

Unter C++ wenn ich einen DatenTyp als string deklariere kann ich auch nichts anderes übergeben ohne diesen zu konvertieren.
Irgendwie ein Heilloses durcheinander.

gruss

TiGü 29. Nov 2018 11:13

AW: Übergabe anderer DatenTypen verhindern
 
In den konkreten Fall konvertiert Delphi für dich automatisch.
Wenn das Verhalten anderes wäre, würden sehr viele Leute sehr viel fluchen.
Das const bezieht sich nur auf die Veränderbarkeit der Argumente innerhalb der Funktion.
Steht aber alles in der Hilfe bzw. Online-Dokumentation. Auch auf Deutsch.

EWeiss 29. Nov 2018 11:15

AW: Übergabe anderer DatenTypen verhindern
 
Zitat:

Zitat von TiGü (Beitrag 1419662)
In den konkreten Fall konvertiert Delphi für dich automatisch.
Wenn das Verhalten anderes wäre, würden sehr viele Leute sehr viel fluchen.

Wie kann ich aber verhindern das hier etwas anderes als ein String übergeben wird.
Gar nicht?

Ich fände das für angenehm weil man dann viele Fehler verhindern könnte.

gruss

freimatz 29. Nov 2018 11:35

AW: Übergabe anderer DatenTypen verhindern
 
Ich denke gar nicht wenn Du den vordefinierten Typ String meinst. In den Fällen wo es Fehler verursachen könnten gibt Delphi normalerweise auch eine Warnung aus.
Als Alternative könntest Du dir einen eigenen Typ definieren.

TiGü 29. Nov 2018 11:46

AW: Übergabe anderer DatenTypen verhindern
 
Zitat:

Zitat von EWeiss (Beitrag 1419663)
Ich fände das für angenehm weil man dann viele Fehler verhindern könnte.

So wie das da oben steht funktioniert das doch eh nur für dich Delphi intern.
Das ist doch jetzt keine Schnittstelle, die du nach außen für ggf. andere Sprachen anbietet...oder etwa doch? :shock:

EWeiss 29. Nov 2018 11:46

AW: Übergabe anderer DatenTypen verhindern
 
Zitat:

Zitat von freimatz (Beitrag 1419668)
Ich denke gar nicht wenn Du den vordefinierten Typ String meinst. In den Fällen wo es Fehler verursachen könnten gibt Delphi normalerweise auch eine Warnung aus.
Als Alternative könntest Du dir einen eigenen Typ definieren.

Ok dann ist es halt so. Danke.

Zitat:

Das ist doch jetzt keine Schnittstelle, die du nach außen für ggf. andere Sprachen anbietet...oder etwa doch?
In dem Fall nicht.
Aber es gibt genug andere DLL's wo es so ist also die mit C#,C++ zusammen arbeiten.
Da habe ich ja das gleiche Problem.

Wenn ich dann in der DLL nicht strikt die Datentypen einhalte wie soll das dann Außerhalb korrekt funktionieren.

gruss

Neutral General 29. Nov 2018 11:59

AW: Übergabe anderer DatenTypen verhindern
 
Also WENN (d)eine Schnittstelle/DLL mit anderen Programmiersprachen kompatibel sein soll, darf sie sowieso keine Strings benutzen.
Dann muss eh alles über P(Wide/Ansi)Char laufen.

EWeiss 29. Nov 2018 12:09

AW: Übergabe anderer DatenTypen verhindern
 
Zitat:

Zitat von Neutral General (Beitrag 1419676)
Also WENN (d)eine Schnittstelle/DLL mit anderen Programmiersprachen kompatibel sein soll, darf sie sowieso keine Strings benutzen.
Dann muss eh alles über P(Wide/Ansi)Char laufen.

Jo das ist klar. ;)
Es geht ja auch nicht im speziellen um string sondern generell um Datentypen.

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:06 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