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

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Kurzer
Beiträge: 1617
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

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

Beitrag 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
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.02 x64, OS: Win 7 Pro x64 & Win 11 x64, Desktopscaling: 125%, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Useralter in 2024: 56 Jahre.
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

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

Beitrag 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.
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8677
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

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

Beitrag 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.
Bild
Benutzeravatar
Josh
Beiträge: 1028
Registriert: 04.08.2009 17:24

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

Beitrag 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.
Benutzeravatar
mk-soft
Beiträge: 3700
Registriert: 24.11.2004 13:12
Wohnort: Germany

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

Beitrag 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)
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

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

Beitrag 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.
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
Kurzer
Beiträge: 1617
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

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

Beitrag 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ß
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.02 x64, OS: Win 7 Pro x64 & Win 11 x64, Desktopscaling: 125%, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Useralter in 2024: 56 Jahre.
Antworten