AGB  ·  Datenschutz  ·  Impressum  







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

String als "normaler" Type

Ein Thema von himitsu · begonnen am 16. Sep 2022 · letzter Beitrag vom 24. Sep 2022
Antwort Antwort
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 Beiträge
 
Delphi 12 Athens
 
#1

AW: String als "normaler" Type

  Alt 23. Sep 2022, 12:31
Das compiliert schon mal aus diversen Gründen nicht:
  1. Do is ein reserved word
  2. as kann dort nicht verwendet werden

Weiter gilt: TestF ist zuweisungskompatibel zu aFunc, aber nicht zu aPointer. Der Rückgabewert von TestF ist zuweisungskompatibel zu Pointer, aber nicht zu aFunc. Der Compiler entscheidet entsprechend.

Anders sieht es hier aus:
Delphi-Quellcode:
Function TestF: Pointer;
Begin
  Result := nil;
end;

function TestF1: TSimpleFunc;
begin
  result := TestF;
end;

...
  aFunc := TestF1; // compiliert nicht
  aFunc := TestF1(); // compiliert
Ich habe mir angewöhnt runde Klammern zu setzen, wenn ich sicherstellen will, dass die Function ausgeführt wird.
Delphi-Quellcode:
  aFunc := TestF;
  apointer := AFunc();
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#2

AW: String als "normaler" Type

  Alt 23. Sep 2022, 13:32
Ja, man kann könnte &String streiben, dann ist es nicht fett.

* Aber syntaktisch ist es falsch, weil das ja eigentlich besagt, dass es kein reserviertes Wort ist, aber die Hilfe besagt, dass es das ist.
(man will ja den "String" haben und nicht was Anderes, das nur zufällig genaus heißt)

* Und außerdem werden & und [Attribute] von der Codevervollständigung vergessen (Bug wird am WE noch gemeldet).


https://docwiki.embarcadero.com/RADS...mente_(Delphi)

* Einige der reservierten Wörter könnte man endlich mal enternen
* * String
* * und ein paar Andere werden seit 20 Jahren in Pascal DelphiLanguage garnicht mehr genutzt, also sinnlos die noch reserviert zu lassen

* und bei den Direktiven sind Zwei seit über 20 Jahren drin, die eigentlich reservierte Wörter sind (werden zwar nebenbei als Hinweise erwähnt, aber wird Zeit die endlich mal zu verschieben)

* und es gibt garkeinen Grund, dass Direktiven "überall" Fett sind (sind Einige auch nicht) aber im Funktionscode fast alle,
obwohl sie "außschließlich hinter Typen-, Methoden- und Property-Deklarationen eine Funktion haben.
Also nur dort haben sie eine Funktion und überall Anders können sie problemlos als Name (Typen/Varablen/Konstanten/Methoden/Parameter) verwendet werden. (nur der Highlighter ist zu doof es halbwegs richtig zu machen)
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.995 Beiträge
 
Delphi 12 Athens
 
#3

AW: String als "normaler" Type

  Alt 23. Sep 2022, 15:49
Ich habe mir angewöhnt runde Klammern zu setzen, wenn ich sicherstellen will, dass die Function ausgeführt wird.
Oh, das hilft? Dann muss ich das wohl übernehmen.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#4

AW: String als "normaler" Type

  Alt 24. Sep 2022, 22:42
Klammern (eine "leere" Parameterliste) führen immer aus.

Bei ( bei Methodenzeigern oder . für Record-Pointer wird immer implizit dereferenziert.


Normal wird ein Methodenzeiger meistens ausgeführt,
außer links steht ein Zeiger/Pointer, also bei Zuweisung an Variable, Property oder Parameter, wo Delphi vorzeugsweise den Zeiger nimmt und nicht ausführt (außer eben wenn mit Klammer).

Schwierig wird es nur, wenn die Funktion in dem Zeiger selber einen Zeiger/Pointer als Result liefert ... dann weiß ich ohne () auch nie, ob nun die Funktion ausgeführt wird und dann deren Result genomen wird oder ob die Variable selber zurückgegeben wird.



Wie gesagt, ALLE anderen Variablen sind Groß und nicht fett ... wieso sollte dann der String nicht auch mal "normal" sein?

Eigentlich dachte ich ich sei nicht der Einzige ... nur finde ich eben keine bestehende RSP, wo ich mich anhängen wollte, als "schonwieder" es "neu" zu melden und als Dupplikat geschlossen zu werden.


OK, dann erstmal was Anderes, dass auch schon seit Jahren nervt, wobei aber erstmal nichts Bestehendes verändert wird.
https://quality.embarcadero.com/browse/RSP-39528
https://quality.embarcadero.com/browse/RSP-39530
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (25. Sep 2022 um 11:07 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 10:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz