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

Ergebnis 1 bis 7 von 7

Thema: AdsOcx1.AdsSyncReadLongVarReq

  1. #1
    Registriert seit
    17.03.2011
    Ort
    im Wald
    Beiträge
    284
    Danke
    11
    Erhielt 36 Danke für 35 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    bin gerade beim Aufräumen und stolpere über eine "Quick and Dirty" - Lösung. Es geht um ADS mit Delphi, folgende Zeile funktioniert nur, wenn "komisch" global definiert ist. Ist sie Lokal, kommt da nur Blödsinn zurück.

    adsResult := AdsOcx1.AdsSyncReadLongVarReq(varHandle, sizeof(komisch), komisch);

    Die Variable "komisch" ist ein Integer

    Gruß, Voxe
    Zitieren Zitieren AdsOcx1.AdsSyncReadLongVarReq  

  2. #2
    Registriert seit
    10.01.2008
    Beiträge
    9
    Danke
    0
    Erhielt 5 Danke für 3 Beiträge

    Standard

    Ich mach nur VB und C#. Aber dort muss mann wenn man Lokal aus einem Baustein lesen oder schreiben will den Pfad mit angeben. Beispiel: Baustein Heisst M_Motor dann würde ich schreiben "M_Motor.komisch". Vielleicht war es das schon

  3. #3
    Avatar von Voxe
    Voxe ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    17.03.2011
    Ort
    im Wald
    Beiträge
    284
    Danke
    11
    Erhielt 36 Danke für 35 Beiträge

    Standard

    Klar, aber das ist es nicht.

    Deine Angaben sind korrekt. Aber es kann auch ein Delphi-Bug sein.

    Gruß

  4. #4
    Registriert seit
    12.04.2010
    Beiträge
    300
    Danke
    22
    Erhielt 54 Danke für 52 Beiträge

    Standard

    Hallo,

    wird die Funktion in einem Aufruf fertig, oder musst du öfters aufrufen bis der Status sagt: ok, jetzt ist gültig ?

    Wenns mehrere Aufrufe sind und du den Aufruf selber in einer Funktion machst, dann ist "komisch" ja bei jedem neuen Aufruf anders, sprich andere Variable, oder ... ?

    Vielleicht hängts damit zusammen ?

    bg
    bb

  5. #5
    Avatar von Voxe
    Voxe ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    17.03.2011
    Ort
    im Wald
    Beiträge
    284
    Danke
    11
    Erhielt 36 Danke für 35 Beiträge

    Standard

    Hallo bits,

    die Anfrage, hat genügend Zeit. Und dieses Problem, besteht nicht nur in einem Projekt.

    Der Variablen-Name steht, nicht ohne Grund, als "komisch". Andere Aufrufe, heisst, Kanal öffnen, abfragen, schliessen, funktionieren.

    Es muss etwas mit dem Aufruf sein, weil der Typ sollte unkritisch sein.

    Gruß, Voxe

  6. #6
    Registriert seit
    19.10.2009
    Beiträge
    194
    Danke
    8
    Erhielt 50 Danke für 44 Beiträge

    Standard

    Wieviel beträgt denn sizeof(komisch)? Integer ist in Delphi nämlich plattformabhängig und nicht auf 4 Byte festgelegt. Sicherer wäre den Typ LongInt zu verwenden.
    Bekommt adsResult nach dem Aufruf irgendeinen Fehlerwert?

    Gruß,
    witkatz

  7. #7
    Avatar von Voxe
    Voxe ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    17.03.2011
    Ort
    im Wald
    Beiträge
    284
    Danke
    11
    Erhielt 36 Danke für 35 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo witkatz,

    habe das mal mit LongInt probiert. Kein Erfolg, nutze Delphi7 auf XP, da sind die Typen allerdings gleich. Heißt 4 Byte. (wird von sizeof(komisch) auch so erkannt)

    Wenn da ein Unterschied wäre, hätte der Compiler geschimpft.

    adsResult meldet 0, also kein Fehler.

    Der Wert der Varaiable komisch, nimmt irgendeinen Wert an, jedenfalls nicht den der PLC. Aber es funktioniert wenn die Variable "global" ist, nur nicht "lokal". Das Beckhoff-InfoSYS macht es allerdings mit einer lokalen.

    Ist halt seltsam und nicht sauber.

    Gruß Voxe

Lesezeichen

Berechtigungen

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