Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 16

Thema: Nullpointer ???

  1. #1
    Registriert seit
    06.10.2003
    Beiträge
    3.414
    Danke
    451
    Erhielt 506 Danke für 408 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute,

    hat jemand eine Ahnung was ein Nullpointer ist und wozu man den sinnvoll verwenden kann?

    Was macht z.Bsp. folgender Funktionsaufruf?
    Code:
     
    TEMP_INT := FILL(BVAL :=  NIL,
                      BLK := TEMP_TAKTE);
    SCL übernimmt das erst einmal. Wird der Bereich "TEMP_TAKTE" gelöscht?


    Gruß, Onkel
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford
    Zitieren Zitieren Nullpointer ???  

  2. #2
    Registriert seit
    07.07.2004
    Beiträge
    3.285
    Danke
    38
    Erhielt 584 Danke für 382 Beiträge

    Daumen hoch

    Hallo,

    Zitat Zitat von Onkel Dago
    Was macht z.Bsp. folgender Funktionsaufruf?
    Das kann man nicht beurteilen, ohne dass Du den Quelltext der Funktion hier einstellst.

    Zitat Zitat von Onkel Dago
    SCL übernimmt das erst einmal. Wird der Bereich "TEMP_TAKTE" gelöscht?
    Auch das kann man nicht beurteilen, ohne die Funktion "FILL" zu kennen. Alles ist möglich ..
    Ein NullPointer ist zuerst mal, ganz allgemein und nicht nur auf SCL bezogen, ein Pointer auf ein nicht instanziiertes oder bereits freigegebenes Objekt, ein programmtechnischer Zugriff auf dieses Objekt wird Dir mit Sicherheit ein GPF von Windows um die Ohren hauen, da ein Zeiger ins Nirwana ...
    Noch schlimmer wird es, wenn nach der Freigabe Deines Objektes der Pointer nicht auf NIL zeigt, sondern auf ein bereits freigebenenes Objekt
    Wenn Du uns die Procedure Fill nicht im Quelltext zeigst, kann keiner ohne die berühmte Kristallkugel beurteilen, wie sich die Procedure bei einer Übergabe eines Nullpointers verhalten wird.

    Gruß

    Question_mark
    ''Ich habe wirklich keine Vorurteile.
    Meine Meinung ist nur die Summe der Erfahrungen" ... (Question_mark)
    Zitieren Zitieren Nil  

  3. #3
    Registriert seit
    07.07.2004
    Beiträge
    3.285
    Danke
    38
    Erhielt 584 Danke für 382 Beiträge

    Lächeln

    Hallo,

    genausogut kann die Procedure Fill den Pointer auf "BVAL" auf "NIL" abfragen und dann evtl. gar nichts machen, aber meine Kristallkugel muss mal wieder poliert werden ...

    Gruß

    Question_mark
    ''Ich habe wirklich keine Vorurteile.
    Meine Meinung ist nur die Summe der Erfahrungen" ... (Question_mark)
    Zitieren Zitieren NIL Pointer  

  4. #4
    Registriert seit
    01.11.2007
    Beiträge
    1.237
    Danke
    91
    Erhielt 407 Danke für 368 Beiträge

    Standard

    Ist denn der FILL-Befehl mit der SFC21 vergleichbar ? Möglicherweise gewinnt man ja neue Erkenntnisse, wenn man den übersetzten Baustein in AWL betrachtet.

    Grüße von HaDi

  5. #5
    Registriert seit
    07.07.2004
    Beiträge
    3.285
    Danke
    38
    Erhielt 584 Danke für 382 Beiträge

    Blinzeln

    Hallo,

    Zitat Zitat von HaDi
    Ist denn der FILL-Befehl mit der SFC21 vergleichbar
    Ist mir eigentlich egal. Kenne den Befehl aus verschiedenen Hochsprachen, um bestimmte Speicherbereiche mit einem vordefiniertem Wert zu füllen..
    Ich denke mal, so aus der Hüfte geschossen, der Speicherbereich ist "BLK", der einzuschreibende Wert ist eine Variable "BVAL", wenn diese auf NIL zeigt wird auch nichts in den Speicherbereich reingeschrieben... , aber wie gesagt, Kristallkugel ...

    Gruß

    Question_mark
    Geändert von Question_mark (27.05.2008 um 00:33 Uhr)
    ''Ich habe wirklich keine Vorurteile.
    Meine Meinung ist nur die Summe der Erfahrungen" ... (Question_mark)
    Zitieren Zitieren Alles NIL, oder was ???  

  6. #6
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard

    Zitat Zitat von Onkel Dagobert Beitrag anzeigen
    Code:
     
    TEMP_INT := FILL(BVAL :=  NIL,
                      BLK := TEMP_TAKTE);
    Ich würde auch sagen, dass es sich hier um den SFC 21 FILL handelt.

    http://www.automation.siemens.com/WW...e&PostID=30200

    http://support.automation.siemens.com/WW/view/de/189016

    Gruß Kai
    Angehängte Dateien Angehängte Dateien

  7. #7
    Avatar von Onkel Dagobert
    Onkel Dagobert ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    06.10.2003
    Beiträge
    3.414
    Danke
    451
    Erhielt 506 Danke für 408 Beiträge

    Standard

    Danke für die Antworten!

    Ja, natürlich handelt es sich um die SFC21. Da habe ich ja wieder einmal Fachleute wie auch Hexenmeister vor Rätsel gestellt. Das war natürlich nicht meine Absicht . Wo bekommt man eigentlich so eine Kristallkugel her?


    Gruß, Onkel
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  8. #8
    Registriert seit
    07.07.2004
    Beiträge
    3.285
    Danke
    38
    Erhielt 584 Danke für 382 Beiträge

    Reden

    Hallo,

    Zitat Zitat von Onkel Dago"
    Wo bekommt man eigentlich so eine Kristallkugel her?
    Eine dieser begehrten Kristallkugeln wird von Markus jedes Jahr auf dem Forumstreffen verlost, damit man eine Chance hat auch Fragen von DAU's zu beantworten

    Aber putzen muss man die schon selber

    Gruß

    Question_mark
    ''Ich habe wirklich keine Vorurteile.
    Meine Meinung ist nur die Summe der Erfahrungen" ... (Question_mark)
    Zitieren Zitieren *gg*  

  9. #9
    Avatar von Onkel Dagobert
    Onkel Dagobert ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    06.10.2003
    Beiträge
    3.414
    Danke
    451
    Erhielt 506 Danke für 408 Beiträge

    Standard

    Ok, ich formuliere meine Frage mal anders.

    Gibt es irgend eine sinnvolle Verwendung des Nullpointers "NIL" unter Step7 bzw. unter SCL? Dient er vielleicht "nur" als Dummy bei der Programmerstellung? Ich rufe z.Bsp. eine Funktion auf welche einen Pointer als Parameter benötigt. Der Pointer ist mir jedoch noch nicht bekannt und ich schreibe erst einmal "NIL" drann (um den Baustein übersetzen speichern zu können). Ist das alles, oder gibt es noch andere Verwendungen?


    Gruß, Onkel
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  10. #10
    Registriert seit
    28.10.2005
    Ort
    Ottweiler, Saar
    Beiträge
    940
    Danke
    259
    Erhielt 124 Danke für 109 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    NIL wird normalerweise benutzt, um einen undefinierten
    Wert zu signalisieren. Dass NIL bei SCL dasselbe wie NULL
    ist, da kann Prof.N.Wirth nix für.

    In C werden ja alle Variablen mit 0 initialisiert, auch die Pointer.
    In Pascal (SCL ist Pascal?!) ist dem nicht so. Hier musst Du das selber erledigen. Überdies nennen sich Pointer hier Zeiger.


    Gängig ist, wenn der Zeiger frisch ist, diesem den Wert NIL zuzuweisen.
    So kann man ihn softwaretechnisch von einem benutzten
    Zeiger unterscheiden...

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •