Seite 3 von 5

Verfasst: 17.01.2009 22:02
von Josef Sniatecki
cxAlex hat geschrieben: @Stargate: Wird nicht gehen.
Wenn du jetzt z.B. "Test" überschreibst kannst du nur 4 Zeichen überschreiben. Wenn du jetzt z.B. "Player" als String hast und überschreibst ihn mit "Spieler" steht da nur "Spiele" und das "r" rutsch irgendohin und du hast den nächsten Speicherfehler/veänderst irgendwas.
Richtig...

Am besten garnicht mit sowas herumspielen. Man ändert da Daten aus
der Exe die in den Arbeitsspeicher geladen wurde. Wenn sich ein String
in der Exe nach der Modifizierung verlängert, dann könnten andere Strings
in der Exe überschrieben werden.

Und das wollen wir ja nicht. :wink: Für die Multi-Sprachunterstützung einfach
Arrays + Konstanten nutzen und fertig.

Verfasst: 17.01.2009 22:03
von ts-soft
freak hat geschrieben:String literale sind nicht zum manipulieren gedacht.
Also sollten diese auch ReadOnly sein, bzw. sollte eine Compilermeldung
drauf aufmerksam machen, die Fehlergefahr ist hier ja sehr groß.

Wenn ich einer Stringvariablen einen String zuweise sind mir ja
vorhergegangene String literale nicht unbeding bekannt.

Verfasst: 17.01.2009 22:23
von freak
ts-soft hat geschrieben:Wenn ich einer Stringvariablen einen String zuweise sind mir ja
vorhergegangene String literale nicht unbeding bekannt.
Wenn du den String einer Variablen zuweist wird ja auch eine Kopie gemacht.

Verfasst: 17.01.2009 22:34
von cxAlex
freak hat geschrieben:
ts-soft hat geschrieben:Wenn ich einer Stringvariablen einen String zuweise sind mir ja
vorhergegangene String literale nicht unbeding bekannt.
Wenn du den String einer Variablen zuweist wird ja auch eine Kopie gemacht.
Es wird eine Kopie des Statischen Strings in die Variable kopiert, und dieser Statische String sollte eben ReadOnly sein, weil alles andere ***** währe. Muss man immer haarspalten wenn es um kleine Sachen geht, die aber viele Fehler von vornherein verhindern könnten? Währe es wirklich so schwer den String-Speicher der Statischen Strings ReadOnly zu machen? Mir währe 1000x lieber das man sich um solche Sachen kümmert anstatt 3 neue Libs fürs nächste Release. Aber genau da wird immer gesagt, "unötig","egal","mach das einfach nicht",...

Verfasst: 17.01.2009 22:47
von freak
Jetzt machst du aber aus ner Mücke nen Elefant.

Verfasst: 17.01.2009 22:57
von cxAlex
freak hat geschrieben:Jetzt machst du aber aus ner Mücke nen Elefant.
Kann sein. Irgentwo muss ich mich mal abregen. Kommt mir nur so vor als wir bei jedem nicht ganz so schweren Bug erst mal probiert das ganze auf den User zu schieben, oder sich anders rauszuwinden, so wie ne Versicherung die nicht zahlen will. Würd mir halt persönlich wünschen das man bei solchen Sachen nicht 10 Seiten rumdiskutiert ob es überhaupt sinnvoll ist sowas zu machen, sondern einfach mal den Fehler korregiert, n kleines [Fixed] in den Titel setzt und zufrieden ist PB n Stück besser gemacht zu haben. Und ist warscheinlich auch schneller als sich 10 Seiten lang herrumzustreiten. Ich bin der Letzte der nicht erkennen würde wie viel Arbeit in PB steckt, Respekt, aber sowas nervt mich halt, nicht böse sein.

Verfasst: 17.01.2009 23:09
von ts-soft

Code: Alles auswählen

Define *b = @"Test" 
Ist nirgends dokumentiert das dies funktionieren soll, hab ich bisher auch
immer gemieden.
Richtig wäre:

Code: Alles auswählen

a.s = "test"
*b = @a
PokeS(*b, "stop")
c.s = "test"
Debug a
Debug c
Und sehe da, keine Probleme, und von der Geschwindigkeit her sollte es
auch keinen Unterschied machen.

Habe erstmal gelernt: Verwende keine Stringliterale, kann zu merkwürdigen
Problemen führen und ist nicht dokumentiert.

@cAlex
Etwas was nicht dokumentiert ist, kann kein Bug sein.

Verfasst: 17.01.2009 23:15
von cxAlex
ts-soft hat geschrieben: @cAlex
Etwas was nicht dokumentiert ist, kann kein Bug sein.
Ähm, ..... . :freak:
Ich lass es bleiben. Siehe meinen oberen Post. Hat keinen Sinn.



>_< >_< >_< >_<

Verfasst: 17.01.2009 23:55
von PMV
cxAlex hat geschrieben:Kann sein. Irgentwo muss ich mich mal abregen. Kommt mir nur so vor als wir bei jedem nicht ganz so schweren Bug erst mal probiert das ganze auf den User zu schieben, oder sich anders rauszuwinden, so wie ne Versicherung die nicht zahlen will. Würd mir halt persönlich wünschen das man bei solchen Sachen nicht 10 Seiten rumdiskutiert ob es überhaupt sinnvoll ist sowas zu machen, sondern einfach mal den Fehler korregiert, n kleines [Fixed] in den Titel setzt und zufrieden ist PB n Stück besser gemacht zu haben. Und ist warscheinlich auch schneller als sich 10 Seiten lang herrumzustreiten. Ich bin der Letzte der nicht erkennen würde wie viel Arbeit in PB steckt, Respekt, aber sowas nervt mich halt, nicht böse sein.
Dann poste so was nur im englischen Forum und ignoriere sämtliche
Kommentare. Diskutieren muss man nämlich nicht. So was wird den
Entwicklern gesagt und die entscheiden sich dafür, oder nicht. Wenn es
diese nicht intressiert bzw. es mit niedriger Priorität ansehen kannst du so
viel schreiben wie du willst ... es ärgert höchstens den Entwickler und da
der auch nur ein Mensch ist ... wird es dann eventuell sogar von der ToDo-
Liste ganz gestrichen. :wink:

MFG PMV

Verfasst: 18.01.2009 05:32
von mk-soft
Habe ja geschrieben das es "irgendwie komisch" ist und nicht unlogisch.
Wenn man blödsinnigen Code schreibt erzeugt jeder Compiler irgendwann auch undefinierte ergebnisse. Hier muss nichts blockiert oder Readonly gemacht werden. Sondern man muss nur ein ordenlichen Code schreiben.