AdsOcx1.AdsSyncReadLongVarReq

Voxe

Level-1
Beiträge
286
Reaktionspunkte
36
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. :confused:

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

Die Variable "komisch" ist ein Integer

Gruß, Voxe
 
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
 
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
 
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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
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
 
Zurück
Oben