Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

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

AW: Copy(S, 1) macht was? Wo ist der 3 Parameter?

  Alt 19. Jul 2022, 09:55
Wenn es sich hier um einen internen Puffer/String handeln würde,
dann könnte man es auch noch verstehen, wenn man ihn nicht direkt raus gibt.
(nicht dass wer böse pointert und den Inhalt der CONST verändert )

Aber hier kommt Value ja von extern und hat diese DB-Klasse garnicht zu interessieren.




Vermutlich:
  • jemand gibt von außen einen uniquen String rein
    • durch das CONST wird der Referenzzähler nicht hochgezählt (obwohl die Parameter ja eigentlich nun eine "Kopie" haben)
  • und dann ist jemand so blöd unvorsichtig und greift aus dem Event raus auf diese externe Variable zu und ändert sie, dann rauscht das nachträglich die Parameter durch
    • werden nur Chars geändert, dann geht die Änderung durch (Variable und Parameter zeigen ja auf den selben Speicher)
    • wird der String selber verändert (Speicher verschoben/freigegeben), dann zeigen die Parameter nun ins Nirvana (zeigen immernoch auf die alte Adresse)

Aber ganz im Ernst, dann läßt man eben das CONST weg und Gut ist. (die Referenzzählung funktioniert wieder und bei Änderung wird eine Kopie angelegt)
(wenn beim OnSetText, anstatt SetEditText, dann passiert es nur beim Eventaufruf innerhalb des IF)

Das "Unique" macht hier aber IMHO wirklich keinen Sinn. (ein Kommentar wäre tatsächlich von Nöten gewesen)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (19. Jul 2022 um 10:13 Uhr)
  Mit Zitat antworten Zitat