TIA Variablen abhängig vom Typ in einem DB finden

Zuviel Werbung?
-> Hier kostenlos registrieren
via Any oder so wie du richtig gesagt hast TypeOf bekommt man den Datentyp einer Variable.
Danke für die Blumen, aber das war ich nicht.
Mit TypeOf() bekommt man den DatenTyp einer Variable. Schon, aber woher bekommt man die Variable?
Zu wissen, dass sie die erste Variable im DB ist, genügt meines Wissens nicht.
Mit ANY? Meinst Du den ANY-Pointer? Da steht z.B. drin, dass ein DatenBaustein adressiert wird, wenn Du vorher diese Information dort eingetragen hast. Steht auch drin, ob es um 1 Bit geht oder 1 Byte oder ein Wort oder ein DoppelWort? Habe zu lange nix mehr damit zu tun gehabt und mag jetzt auch nicht nachforschen. Selbst wenn, dann hast Du vorher diese Information dort eingetragen. Dann weiss man aber auch nur die (probeweise willkürlich vorgegebene) Länge der Variablen, aber selbst das würde nicht genügen, um den tatsächlichen DatenTyp zu identifizieren.
Bei Any via der AT Funktion (Siehe Hilfe im TIA).
Wenn ich mich nicht sehr täusche, benutzt man AT bei der Deklaration. Willst Du entsprechende AT-Überlagerungen vorab deklarieren und dann zur Laufzeit die passende durch trial&error herausfinden?
Bei TypeOf kann man gleich ziemlich Simpel vergleichen -> DANKE! für die Info.
Vergleichen womit? Meinst Du mit einem zweiten TypeOf(), in dem eine Variable eines Dir bekannten DatenTyps abgefragt wird?

Sorry, ich bleibe sehr skeptisch, was die Machbarkeit bzw. das Gelingen betrifft.
 
Und wie sieht das aus?
Ohne dass Du den Typ kennst? Zeig mal die Codezeile.

Nein sorry! So meinte ich das nicht! Ich meinte damit, dass wenn es genügen sollte, dass ich die erste Variable manuell zuweise bzw. manuell den Datentyp irgendwo bekannt gebe und dadurch mit Any, einem speziellen Pointer,
AssignmentAttempt: (Zuweisung eines VARIANT auf eine Referenz versuchen) oder sonst mit einer speziellen Funktion irgendwie eruiert werden kann welches Format der nächste Eintrag hat dann wäre das okay für mich......
Es wäre auch okay für mich wenn ich von vorne herein weiß, dass es nur fix 4 Datentypen geben kann (Bool, Byte, Word, DWord).....
Mittlerweile habe ich extrem viele Sachen probiert und für mich neue Funktionen kennen gelernt... Auch einen Ansatz mit AWL hätte ich noch im Kopf......
Ich muss das jetzt alles mal sickern lassen... o_O

Wenn man das hinbekommt ich würde mir für jetzt und für kommende Projekte viel Zeit ersparen!
Aber eines gebe ich ehrlich zu! Ich dachte, dass ist eine 10min. Aufgabe :ROFLMAO:
 
Wenn man das hinbekommt ich würde mir für jetzt und für kommende Projekte viel Zeit ersparen!

Also so etwas habe ich in meinen fast 30 Jahren SPS-Programmierung noch nie gebraucht und ich kann mir auch nicht vorstellen, für was man so etwas brauchen sollte.
Erfahrungsgemäß kommen solche Wünsche immer dann auf, wenn die Datenstruktur von Anfang an recht planlos gemacht wird bzw. wenn es gar keine Struktur gibt.
 
Also so etwas habe ich in meinen fast 30 Jahren SPS-Programmierung noch nie gebraucht und ich kann mir auch nicht vorstellen, für was man so etwas brauchen sollte.
Erfahrungsgemäß kommen solche Wünsche immer dann auf, wenn die Datenstruktur von Anfang an recht planlos gemacht wird bzw. wenn es gar keine Struktur gibt.

Ist ja egal wie es dazu kommt!!!!
Ich habe über 20 Jahre auf dem Buckel aber wenn es der Lösung nun dienlich ist dann meine Erklärung zum Ausgangspunkt:
1)
Es werden aus mehreren unterschiedlichen SPS´en auf diesen nichts verändert werden darf bzw. kann Daten gelesen. Gelesen wird meistens via GET od. z.T. auch via TRC_V odgl. Die Datenstruktur mit den dadurch durchgewürfelten Datentypen kommt somit schon so an und JA ich könnte jetzt natürlich gleich beim z.B. GET Baustein Pointern, denn GET-Baustein ggf. öfter Aufrufen und mir gleich die Variablen nach Typen sortieren aber ich finde das unschön und ausserdem ist das ja nicht immer gleich von SPS zu SPS zudem ist das eine extrem langwierige und Fehlerbehaftete Aufgabe.
2)
Habe ich nun die ganzen Daten muss ich diese in meiner SPS noch aufbereiten -> Boolsche Variablen unterschiedlich entbrellen, Zeitstempel von frei definierten Wertänderungen Archivieren, Min-Max-Werte von Variablen begrenzen udgl. Diese ganze Aufbereitung geht Easy-Cheese wenn ich alle Variablen der Typen getrennt dann in einem Array habe.
3)
Ist dass alles geschehen werden die Daten ordentlich der Typen sortiert, aufbereitet und so wie es der Kunde wünscht dem Leitrechner übergeben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Erfahrungsgemäß kommen solche Wünsche immer dann auf, wenn die Datenstruktur von Anfang an recht planlos gemacht wird bzw. wenn es gar keine Struktur gibt.
Nur dann kann eine solche "AufräumAktion" überhaupt Sinn machen. Eine "planvolle" DatenStruktur wird dadurch nicht noch planvoller - im Gegenteil.
 
Und falls das (wie auch immer) funktionieren würde, bleibt das Problem, dass man erst noch nicht weiß, welche Variable welchen Wert enthält. Soll das am Besten auch noch vollautomatisch ermittelt werden?
Am Besten von nicht-optimierten auf optimierte DBs switchen?

Sorry, aber für mich hört sich das Ganze eher nach Wunschdenken eines technisch unbegabten Managers/Verkäufers... an als eines Programmierers.

Der einzige vernünftige Ansatz:
gewünschte DBs aus den Fremd-Programmen heraus holen (Zwischenablage und Excel oder ggf. Openness Schnittstelle) und dann per Makro passenden Code schreiben, als Quelle importieren und übersetzen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Richtig! aber wie?
also bekannt wird die anzahl der datensätze sein ...
also arry anlegen vom typ datentyp ...
^^ wenn es das nicht gibt ... dann int und die typen in einer enum hinterlegen
schleife von x=1 bis ende ...
datentyp auslesen und in array(x) speichern ...

jetzt ist ein datensatz von x=1 bis ende in der db vorhanden und ein array[x..ende] mit den datentypen ...

naja .. und zum schreiben in die "neue db" wird die nächste schleife benötigt ...
und eben abhängig vom wert der im array steht dann mit case array[x] of .... usw
 
Und falls das (wie auch immer) funktionieren würde, bleibt das Problem, dass man erst noch nicht weiß, welche Variable welchen Wert enthält. Soll das am Besten auch noch vollautomatisch ermittelt werden?
Am Besten von nicht-optimierten auf optimierte DBs switchen?

Sorry, aber für mich hört sich das Ganze eher nach Wunschdenken eines technisch unbegabten Managers/Verkäufers... an als eines Programmierers.

Der einzige vernünftige Ansatz:
gewünschte DBs aus den Fremd-Programmen heraus holen (Zwischenablage und Excel oder ggf. Openness Schnittstelle) und dann per Makro passenden Code schreiben, als Quelle importieren und übersetzen.

Sehr überheblich ohne den genaueren Hintergrund zu kennen.

Deinen Ansatz mit Excel und Markro ist sowieso im Hinterkopf aber dafür benötige ich nicht diese Fragestellung in diesem Forum.

Ich finde Ihr sollet euch eher ums Thema kümmern. Keinen interessieren hier eure persönlichen Meinungen und wer nichts zielstrebiges beitragen kann der soll sich eher zurückhalten denn dadurch wird´s künftig für einen Sucher schwieriger!
 
Sehr überheblich ohne den genaueren Hintergrund zu kennen.

Deinen Ansatz mit Excel und Markro ist sowieso im Hinterkopf aber dafür benötige ich nicht diese Fragestellung in diesem Forum.

Ich finde Ihr sollet euch eher ums Thema kümmern. Keinen interessieren hier eure persönlichen Meinungen und wer nichts zielstrebiges beitragen kann der soll sich eher zurückhalten denn dadurch wird´s künftig für einen Sucher schwieriger!
ja das ist ein phänomen, das es in jedem forum so gibt ...
menschen, die hier helfen wollen, sind oft kranke perfektionisten oder egomanen oder sozial inkompetent -
aber meist genies auf ihrem gebiet ;)
und natürlich überbewertet man manchmal den "ton" hier ...

einfach ignorieren - wir sind alle etwas anders ;)


^^ mein gedankengang ... verstehst du was ich meine, oder bin ich mit der lösung total daneben ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Sehr überheblich ohne den genaueren Hintergrund zu kennen.

...

Ich finde Ihr sollet euch eher ums Thema kümmern. Keinen interessieren hier eure persönlichen Meinungen und wer nichts zielstrebiges beitragen kann der soll sich eher zurückhalten denn dadurch wird´s künftig für einen Sucher schwieriger!

Ich würde einmal sagen, dass sich die Leute hier bislang sehr wohl um genau das Thema gekümmert haben ...
Dummerweise haben natürlich alle wieder den Fehler gemacht und wollten dir mit Ratschlägen helfen - aber Hilfe wolltest du ja nicht wirklich.
Das, was du da vorhast, ist im Hochsprachen-Bereich (also z.B. .Net) überhaupt kein Problem wenn man z.B. mit dem Typ LIST arbeitet - so eine Liste beinhaltet erstmal die Variablen, dir du direkt ansprechen kannst weil es erstmal Objekte sind und von denen du dann alle weiteren Informationen erhalten kannst.
Eine vergleichbare Funktionalität gibt es aktuell im SPS-Umfeld nicht.
Jetzt kannst du dir natürlich möglicherweise etwas zusammen-programmieren, das unter gewissen Umständen sogar funktioniert - die Frage dabei ist dann allerdings, wie es die SPS-Zykluszeit belastet. Unter Anderem daher kam hier von einigen der Rat, genau das eben nicht zu tun ...
Aber jetzt mal prinzipiell : ich könnte mir vorstellen, dass du, wenn du einen NICHT optimierten Baustein hast ... UND ... den Typ der ersten Variablen kennst, dich durch den Rest mit einem ziemlich komplizierten Konstrukt irgendwie durchhangeln könntest. Ich (und wahrscheinlich auch nicht du) möchte mich durch den hier möglicherweise entstehenden Code nicht im Fehlerfall durchkämpfen müssen ...

Aber wie auch immer ...
Gruß
Larry
 
Zurück
Oben