Seite 1 von 1

String mit fester Länge in Struktur kann mit > Länge gefüllt

Verfasst: 31.10.2019 01:06
von Kurzer
Moin Kollegen,

ich übersehe vermutlich nur etwas (in der Hilfe).

Ich habe in einer Struktur einen String mit der Länge 1.

Code: Alles auswählen

Structure Settings
	; other values
	sCompression.s{1}
EndStructure
So weit so gut. Nur kann ich diesen Eintrag problemlos mit

Code: Alles auswählen

SettingVariable\sCompression = "kjsjkhgsdkfjkd"
beschreiben.
Es befindet sich zwar später nur der erste Buchstabe darin ("k"), aber hätte da nicht schon der Compiler anschlagen müssen?

Gruß Kurzer

Re: String mit fester Länge in Struktur kann mit > Länge gef

Verfasst: 31.10.2019 09:00
von ccode_new
Es befindet sich zwar später nur der erste Buchstabe darin ("k"), aber hätte da nicht schon der Compiler anschlagen müssen?
Wirklich ?

Hier 2 Dinge die man vlt. vermeiden will ?:

-> Prüfen kostet IMMER Zeit.

-> Prüfen könnte weitere Fehler nach sich ziehen.

Re: String mit fester Länge in Struktur kann mit > Länge gef

Verfasst: 31.10.2019 10:58
von NicTheQuick
Ob das während des Kompilierens jetzt 5 Millisekunden länger dauert, ist doch echt egal. Eine Warnung fände ich hier auch angebracht.
Und ich wüsste auch nicht welche Fehler das nach sich ziehen könnte.

Re: String mit fester Länge in Struktur kann mit > Länge gef

Verfasst: 31.10.2019 11:24
von Josh
Dass in einen Fixstring ein Literal geschrieben wird, macht für mich nur in absoluten Ausnahmefällen Sinn. Spätestens wenn in den Fixstring eine Variable geschrieben wird, ist es mit der Prüfung zur Kompilierzeit ohnehin vorbei.

Ein Compiler wird immer ein gewisser Kompromiss zwischen Prüfungen und Kompilierzeit sein. In diesem Fall würde ich sagen, kann geprüft werden, muss aber nicht. Was soll schon schlimmes passieren.

Re: String mit fester Länge in Struktur kann mit > Länge gef

Verfasst: 31.10.2019 11:57
von mk-soft
Auf die maximale Länge muss man zur Laufzeit selber achten.
Aber PB ist so gut, das der String ordnungsgemäß auch mit NULL auffüllt. :wink:

Code: Alles auswählen

Structure udtTest
  text.s{16}
EndStructure

Global var.udtTest

var\text = "1234567890123456"
var\text = "Hello"

ShowMemoryViewer(var, 32)

Re: String mit fester Länge in Struktur kann mit > Länge gef

Verfasst: 31.10.2019 16:40
von ccode_new
Ob das während des Kompilierens jetzt 5 Millisekunden länger dauert, ist doch echt egal. Eine Warnung fände ich hier auch angebracht.
Vielleicht brauchen (je nach Intensität) genauere Speicherprüfungen auch viele mehrere Minuten länger.

Ich würde weitere optimierte Prüfungen zur Kompilierzeit und auch zur Laufzeit natürlich beführworten.

Ansonsten sollte die besste Prüfung immernoch die mit seinen eigenen Sinnen und Hirn sein.

Re: String mit fester Länge in Struktur kann mit > Länge gef

Verfasst: 31.10.2019 18:58
von Kurzer
Okay, dann habe ich immerhin nichts überlesen in der Hilfe. Firma dankt.
ccode_new hat geschrieben:Ansonsten sollte die besste Prüfung immernoch die mit seinen eigenen Sinnen und Hirn sein.
Das ist richtig, aber wie das so ist mit den Menschen... sie sind nicht perfekt.
In meinem Fall war es ein zu schnell ausgeführtes Replace im Sourcecode... ich habe das zuerst gar nicht bemerkt, dass ich da mehr als 1 Zeichen reinschreibe.

Na ich werde es trotzdem mal im englischen Forum posten. Fred kann das sicher am besten beurteilen, ob er die Taktzyklen für so eine Prüfung/Warnung noch übrig hat in seinem Compiler. :wink:

Kurzer Gruß