Editboxen auslesen und Inhalt ausgeben



  • Du legst nen kleineren Array an, als du chars max. holst 😉



  • Bei

    GetWindowTextLength (hEdit);
    

    wird der Terminator ('\0') nicht mitgezählt.
    Bei der GetWindowText Funktion wird dieser allerdings schon wieder mitgezählt, wenn man diesen nun aber nicht haben, will ist dies eine Notlösung.

    Daraus folgt: der Buffer kann/wird überschrieben, so hat man allerdings keinen Terminator mehr im String. Ob das ne gute Lösung ist bezweifle ich auch ;).



  • Den '\0' will man aber haben 😃

    Greetz, Swordfish

    BTW: Buffer-Overruns sind nie eine "Lösung"



  • Platy schrieb:

    Bei

    GetWindowTextLength (hEdit);
    

    wird der Terminator ('\0') nicht mitgezählt.
    Bei der GetWindowText Funktion wird dieser allerdings schon wieder mitgezählt, wenn man diesen nun aber nicht haben, will ist dies eine Notlösung.

    Daraus folgt: der Buffer kann/wird überschrieben, so hat man allerdings keinen Terminator mehr im String. Ob das ne gute Lösung ist bezweifle ich auch ;).

    <- ⚠ <-> ⚠ <-> ⚠ ->

    Was soll das denn bitte für ne schwachsinnige Schlussfolgerung sein ?!
    Wenn dir '\0' auf S*** geht, dann nimm std::strings o.ä.. Wenn du aber mit C-Strings arbeitest musst du Null-Terminieren.

    ➡ Siehe auch Swordfish's Post:

    Swordfish schrieb:

    BTW: Buffer-Overruns sind nie eine "Lösung"



  • CodeFinder schrieb:

    Platy schrieb:

    Bei

    GetWindowTextLength (hEdit);
    

    wird der Terminator ('\0') nicht mitgezählt.
    Bei der GetWindowText Funktion wird dieser allerdings schon wieder mitgezählt, wenn man diesen nun aber nicht haben, will ist dies eine Notlösung.

    Daraus folgt: der Buffer kann/wird überschrieben, so hat man allerdings keinen Terminator mehr im String. Ob das ne gute Lösung ist bezweifle ich auch ;).

    <- ⚠ <-> ⚠ <-> ⚠ ->

    Was soll das denn bitte für ne schwachsinnige Schlussfolgerung sein ?!
    Wenn dir '\0' auf S*** geht, dann nimm std::strings o.ä.. Wenn du aber mit C-Strings arbeitest musst du Null-Terminieren.

    ➡ Siehe auch Swordfish's Post:

    Swordfish schrieb:

    BTW: Buffer-Overruns sind nie eine "Lösung"

    Naja.....
    Es kommt immer darauf an wie man die Strings später weiterverwenden will. Ich brauchte in meinen ehem. Projekt nun einmal eine solche Lösung. Als ich auf die Frage im ersten Post geantwortet habe, habe ich nuneinmal den Code aus dem Projekt genommen, daher ist der Terminator nicht vorhanden. Mir ist auch klar das wenn man einfachen Text einließt der automatische Terminator schon eine nützliche z.T. "notwendige" Sache ist.



  • Ich denke du hast noch nicht wirklich erfasst, worum es mir geht. Wenn du über Puffergrenzen schreibst verursachst du einen sog. Buffer-Overrun, welcher (dann als Sicherheitslücke) uU. ausgenützt werden kann, um fremden Code auf deinem Rechner auszuführen.

    Greetz, Swordfish



  • Swordfish schrieb:

    Ich denke du hast noch nicht wirklich erfasst, worum es mir geht. Wenn du über Puffergrenzen schreibst verursachst du einen sog. Buffer-Overrun, welcher (dann als Sicherheitslücke) uU. ausgenützt werden kann, um fremden Code auf deinem Rechner auszuführen.

    Greetz, Swordfish

    Dessen bin ich mir durchaus bewusst.
    Wenn ich ein Programm entwickle, welches auf fremden Rechnern laufen soll, dann baue ich so oder so noch ein paar mehr Technicken ein um solche dinge zu untersagen.

    Fazit:
    Ich weiß was du meinst, ich weiß auch das solche Overruns zum Programmabsturz oder noch schlimmeren Dingen führen kann.



  • Platy schrieb:

    Dessen bin ich mir durchaus bewusst.

    Hmmm.... ➡

    Platy schrieb:

    Wenn ich ein Programm entwickle, welches auf fremden Rechnern laufen soll, dann

    ... muss man dort die C-Strings auch Null-Terminieren, oder du arbeitest mit 'Systemen', die diese Welt noch nicht gesehen hat 😃 ...die würd ich gern mal kennen lernen

    Platy schrieb:

    baue ich so oder so noch ein paar mehr Technicken ein um solche dinge zu untersagen.

    Wow!, Das hört sich aber futuristisch an...Was sind das denn für 'Technicken' ? 😃

    Platy schrieb:

    Fazit:
    [...]

    😃 Sicher ?! 😃



  • CodeFinder schrieb:

    Platy schrieb:

    baue ich so oder so noch ein paar mehr Technicken ein um solche dinge zu untersagen.

    Wow!, Das hört sich aber futuristisch an...Was sind das denn für 'Technicken' ? 😃

    Würd' ich auch gerne wissen 😉

    Greetz, Swordfish



  • CodeFinder schrieb:

    Platy schrieb:

    Fazit:
    [...]

    😃 Sicher ?! 😃

    Ja.

    Naja...
    Damit diese Diskussion nicht noch weiter ausartet sag ich es mal so:

    Habt gewonnen, ich habe einen Fehler gemacht.


Anmelden zum Antworten