Announcement

Collapse
No announcement yet.

memset funktioniert nicht !?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • memset funktioniert nicht !?

    MyRecordType *Array=(MyRecordType *) farmalloc(sizeof(MyRecordType));

    memset(Array,sizeof(MyRecordType),0);

    MyRecordType ist eine Struktur, bestehend aus short int, float und long Variablen. Wenn ich hinter der Zeile memset einen Breakpoint setze und das Array untersuche, bekomme ich einen Schreck: Die ersten 4 Variablen - allesamt short int - sind mit 26696, 38, 26660 und 38 initialisiert, alle anderen Daten sind korrekt auf 0 gesetzt.

    Das Ganze passiert in einer WIN32-Anwendung mit BC5.02 unter NT4.

    Hat jemand eine Idee, woran so etwas liegt ? Danke - Günther
    Günther

  • #2
    Hallo Günther,

    ich benutze auch 5.02, allerdings unter Win95 auf einem separaten
    System wegen Borlandempfehlung (nicht das sep System aber Win95)
    aber daran kann es nicht liegen.

    Was ist das für eine Struct. ? Ich arbeite auch mit Structs, um Daten
    aus einem Dialog ins übrige Programm zu bekommen und verwende gar
    kein memset. Meine Struct hat auch noch eine ComboBox dabei.

    Ich würde mich auch nicht mehr als Anfänger sehen, aber wo ist die
    Grenze, ab der man sagen kann ich bin Profi. Man wird sicher sehr
    lange brauchen, um perfekt zu sein.

    MfG
    Gerhard Schwese

    Comment


    • #3
      Hallo Gerhard,

      Unter WIN2000 funktioniert es auch nicht. Extra einen PC mit WIN95 hinstellen ist Quatsch. Das Programm muß hinterher auf allen Systemen funktionieren. Wenn ich den Breakpoint schon vor die memset - Zeile setze und / oder einen anderen Wert als 0 angebe, sehe ich ganz deutlich das memset überhaupt nichts tut. Laut Hilfe ist memset auch unter WIN32 einsetzbar. Jetzt nehm ich die Win32 Funktion ZeroMemory, funktioniert einwandfrei. Dumm ist nur, daß der Quelltext ( hoffentlich nicht mehr lange ) auch unter 16bit Windows und unter DOS compiliert werden muß, da muß ich jetzt noch ein paar #ifdef 's einbauen.

      Vielleicht sehen wir uns ja nochmal auf dem Weg zum Profi ;-)

      Gruß - Günthe
      Günther

      Comment


      • #4
        Hallo Günther,<br>
        <br>

        Die Definition von memset ist<br>
        void *memset(void *s, int c, size_t n);<br>
        <br>
        Du hast da einen Dreher drin und die Groesse mit Anzahl vertauscht.<br>
        <br>
        Chri

        Comment


        • #5
          Hallo Christian,

          In der Zeile in der die Probleme auftraten hatte ich tatsächlich den Verdreher eingebaut :-(

          Aber inzwischen darf ich auf memset zugunsten ZeroMemory verzichten.

          Danke - Günthe
          Günther

          Comment

          Working...
          X