AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
21.01.22 - 19:03:17
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News:
Schnellsuche:
+  Das Notes Forum
|-+  HCL Notes / Domino / Diverses
| |-+  Entwicklung (Moderatoren: eknori, fritandr, koehlerbv, Tode)
| | |-+  Single value in Variant Array in Dokument geschrieben --> Schrott in Dokument
« vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Single value in Variant Array in Dokument geschrieben --> Schrott in Dokument  (Gelesen 400 mal)
Tode
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 6662


Geht nicht, gibt's (fast) nicht... *g*


« am: 04.01.22 - 09:36:17 »

Bin grade über ein seltsames Phänomen gestolpert, das ich mir nicht wirklich erklären kann.

Hintergrund: Ich habe eine "generische" Funktion, um Dokumentwerte (vergleichbar) zu setzen. Im Dokument kommt aber nicht das an, was ich setze. Hier ein Auszug aus einem Agenten mit dem minimalen Code um das Problem zu reproduzieren:

Code:
Dim ses as New NotesSession
Dim db as NotesDatabase
Dim doc as NotesDocument
Dim arrValue(0) As Variant
Dim s as Single

Set db = ses.CurrentDatabase
Set doc = db.UnprocessedDocuments.GetFirstDocument

s = 1
arrValue(0) = s
msgbox arrValue(0)
Call doc.ReplaceItemValue( "AAA" , arrValue )
msgbox doc.GetItemValue( "AAA" )(0)

Messagebox 1:

1

Messagebox 2:

5,26354424712089E-315

Kann sich das jemand erklären? Passiert da eine seltsame Type- Conversion beim schreiben eines Single in ein Variant- Array?
Gespeichert

Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen...
CarstenH
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 465



« Antworten #1 am: 04.01.22 - 09:52:51 »

Passiert da eine seltsame Type- Conversion beim schreiben eines Single in ein Variant- Array?

Hab auch schon festgestellt, dass sich Variants (für mich) teils unvorhersehbar benehmen jenachdem ob man sie mit einem oder mehreren Werten befüllt. Im Notfall habe ich dann nacheinander in beide Richtungen konvertiert damit es stabil passte.

Carsten
Gespeichert
Tode
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 6662


Geht nicht, gibt's (fast) nicht... *g*


« Antworten #2 am: 04.01.22 - 10:11:28 »

Witzigerweise: Ersetzt man Single mit Double, dann kommt der richtige Wert im Dokument an...
Gespeichert

Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen...
pantelis.botsas
Frischling
*
Offline Offline

Geschlecht: Männlich
Beiträge: 14


Κάθε μέρα αξίζει


WWW
« Antworten #3 am: 13.01.22 - 17:06:03 »

Kann sich das jemand erklären? Passiert da eine seltsame Type- Conversion beim schreiben eines Single in ein Variant- Array?

Hallo Tode,

in Lotusscript werden Werte beim Datentyp Single als 4byte-Block angelegt.
Der Datentyp Variant wird jedoch als 8byte-Block angelegt.

Bei der Zuweisung eines Single-Typs zu einem Variant-Typ erfolgt eine Konvertierung von 4byte auf 8byte. Doch leider nicht so, wie man sich das erhofft, sondern - so wie ich es verstanden habe - linksbündig statt rechtsbündig im vorgegebenen Speicherblock.

https://help.hcltechsw.com/dom_designer/10.0.1/basic/LSAZ_VARIANT_DATA_TYPE.html

Da Double ebenfalls als 8byte-Block angelegt wird, geht bei der Zuweisung zu einem Variant nichts kaputt.
« Letzte Änderung: 16.01.22 - 02:38:27 von pantelis.botsas » Gespeichert
Tode
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 6662


Geht nicht, gibt's (fast) nicht... *g*


« Antworten #4 am: 14.01.22 - 08:15:19 »

Wow, danke für diese Hintegrundinformation.
Gespeichert

Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen...
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: