Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Problem mit Dictionary-Objekten

10 views
Skip to first unread message

Roman Vottner

unread,
May 10, 2001, 3:17:30 PM5/10/01
to
hallo ng,

ich hab ein kleines problem mit dictionary-objekten.

ich binde ein dictionary-objekt mittels
Set dic = CreateObject("Scripting.Dictionary")
in meine asp-seite ein. danach weiße ich dem objekt einige daten zu:
dic.add "England", London
dic.add "Frankreich", Paris
und um die daten jetzt noch auf einer anderen seite nutzen zu können
übergebe ich die daten an ein application-object
Application("dic") = dic.items

wenn ich aber nun auf einer anderen seite versuche auf die daten zuzugreifen
meldet er mir immer wieder objekt erforderlich, obwohl ich auch auf der
neuen seite ein dictionary-objekt mittels
Set dic = createObject("Scripting.Dictionary")
erstellt habe

was mach ich falsch? ... wie bekomme ich die gesamten daten von einem
dictionary-object von einer seite auf die andere, so daß ich auf die daten
auch wieder zugreifen kann?

ich hoffe, das von euch mein problem schon mal gelöst hat

mfg,
roman vottner
www.rovoweb.net


Stefan Falz [MVP]

unread,
May 10, 2001, 3:25:32 PM5/10/01
to
Hallo Roman,

"Roman Vottner" <vot...@chello.at> schrieb im Newsbeitrag news:ePBK6.22825$za3.7...@news.chello.at...

> ich binde ein dictionary-objekt mittels
> Set dic = CreateObject("Scripting.Dictionary")
> in meine asp-seite ein. danach weiße ich dem objekt einige daten zu:
> dic.add "England", London
> dic.add "Frankreich", Paris
> und um die daten jetzt noch auf einer anderen seite nutzen zu können
> übergebe ich die daten an ein application-object
> Application("dic") = dic.items

Set Application("dic") = dic

>
> wenn ich aber nun auf einer anderen seite versuche auf die daten zuzugreifen
> meldet er mir immer wieder objekt erforderlich, obwohl ich auch auf der
> neuen seite ein dictionary-objekt mittels
> Set dic = createObject("Scripting.Dictionary")
> erstellt habe

Set dic = Application("dic")

Aber ich glaube mich zu erinnern, dass Dictionarys in einem
Session- oder Applicationobjekt nichts zu suchen haben
(ich glaube wegen des Treadingverhaltens). Da ich das aber
noch nie benötigt und daher auch nicht gemacht habe, kann
ich es nicht 100%ig sagen. Such am besten mal in der
MS KB nach Application Dictionary (unter Active Server Pages)

--
Tschau, Stefan
MS MVP für Active Server Pages
http://www.aspfaq.de
http://www.aspforum.de


Christian Weissengruber

unread,
May 10, 2001, 3:43:55 PM5/10/01
to
Hallo Ich arbeite mit dictionaries.
das schaut z.B. so aus:
es gibt einen include file,wo das dic gebildet wird
ini.asp
Set objIniDict = CreateObject("Scripting.Dictionary")

objIniDict.Add "SERVER", "www.set4u.at"
und so weiter
#######################
in den script files steht dann:
<!--#INCLUDE FILE = "../include/ini.asp" -->
...
...
'' Set conntection Properties
if objIniDict.Exists("SERVER") then
SERVER = objIniDict.Item("SERVER")
und so weiter.

ich hoffe das ist verständlich.
--
Gruss
Christian

"Stefan Falz [MVP]" <ms....@asp-database.de> schrieb im Newsbeitrag
news:e2a3qcY2AHA.1840@tkmsftngp03...

Stefan Falz [MVP]

unread,
May 10, 2001, 3:50:48 PM5/10/01
to
Hallo Christian,

"Christian Weissengruber" <c.weiss...@aon.at> schrieb im Newsbeitrag news:3afaef78$0$32320$62ce1842@SSP1NO55...

> Hallo Ich arbeite mit dictionaries.
> das schaut z.B. so aus:
> es gibt einen include file,wo das dic gebildet wird
> ini.asp
> Set objIniDict = CreateObject("Scripting.Dictionary")
>
> objIniDict.Add "SERVER", "www.set4u.at"
> und so weiter
> #######################
> in den script files steht dann:
> <!--#INCLUDE FILE = "../include/ini.asp" -->
> ...
> ...
> '' Set conntection Properties
> if objIniDict.Exists("SERVER") then
> SERVER = objIniDict.Item("SERVER")
> und so weiter.
>
> ich hoffe das ist verständlich.

verständlich ist es schon, aber er braucht sein Dictionary
z.B. auf seite1.asp und dann wieder auf seitex.asp. Also
muss er es theoretisch in eine Session- oder Applicationvariable
schreiben, da ansonsten die Daten ja beim Beenden der einen
Seite verlorengehen.

Roman Vottner

unread,
May 10, 2001, 4:04:40 PM5/10/01
to
Hallo Stefan,

Danke für deine schnelle Antwort, jedoch lässt er mich das Dictionary-Array
nicht in einem an das Application-Objekt weitergeben --> Set
Application("dic") = dic - hier tritt folgender Fehler auf:

Anwendungsobjekt-Fehler 'ASP 0197 : 80004005'

Unzulässige Objektverwendung

/Homepage/Dictionary.asp, Zeile 159

Ein Objekt, das sich dem Apartment-Modell entsprechend verhält, kann
nicht zum Anwendungsobjekt hinzugefügt werden

ich glaube, das hast du vorhin gemeint oder? nun, dann müsste es aber
logisch sein, wenigstens die einzelnen Daten aus dem dictionary-Object einem
Application-Objekt zu übergeben:
Set Application("dicItems") = dic.Items
- doch hier tritt leider auch mal wieder ein fehler auf:

Laufzeitfehler in Microsoft VBScript-Fehler '800a01a8'

Objekt erforderlich: 'Application'

/Homepage/Dictionary.asp, Zeile 159

hmmm ... langsam bin ich schon am verzweifeln *g*. mal schaun was für
Fehlermeldungen der IIS bzw VBScript noch zu bieten hat *fg* ... hätte
jemand vielleicht einen besseren Vorschlag für mein Problem? ... Ist
vielleicht der Einsatz einer Datenbank hier die intelligentere Lösung ...
vorallem wenn die Daten sich sehr schnell ändern könnten?

cu,
Roman Vottner
www.rovoweb.net

"Stefan Falz [MVP]" <ms....@asp-database.de> schrieb im Newsbeitrag
news:e2a3qcY2AHA.1840@tkmsftngp03...

Jost Schwider

unread,
May 11, 2001, 12:48:41 AM5/11/01
to
Hallo Roman,


nicht verzweifeln, sondern nach einer Alternative suchen! ;-)


Du könntest z.B. ein ungebundenes RecordSet benutzen und dieses in das
Application-Objekt packen:
http://msdn.microsoft.com/workshop/server/feature/cache.asp


Echte Dictionary-Alternativen benötigte Microsoft selbst:
http://msdn.microsoft.com/workshop/management/planning/MSDNchronicles2.asp


Viele Grüße
Jost aus Soest (sprich: Joost aus Soost)
--
http://vb-tec.de/ - FAQ, Referenz, Beispiele, Tipps

--
_____________________________________________________________
NewsGroups Suchen, lesen, schreiben mit http://netnews.web.de

Jörg Gregorius

unread,
May 11, 2001, 4:54:20 AM5/11/01
to
Hallo Roman,

wir haben das folgendermaßen gelöst ... hier: Mehrsprachigkeit einer
Anwendung.

Dictionary-Object in global.asa definiert:

<OBJECT RUNAT=SERVER SCOPE=Application ID=TX_Sprache1
PROGID="Scripting.Dictionary"></OBJECT>
(muß außerhalb <script ...></script> in der global.asa stehen!)

In einer ASP refenziert man dann z.B. folgendermaßen das Dictionary-Object:
TX_Sprache1.Add UCase(TextAcronym), TextInhalt

Ich hoffe, dies hilft Dir etwas weiter.

Beste Grüße
Jörg

Roman Vottner <vot...@chello.at> schrieb in im Newsbeitrag:
ePBK6.22825$za3.7...@news.chello.at...
>


Martin Koreis

unread,
May 11, 2001, 5:53:05 AM5/11/01
to
Hi

Ich denke das Problem liegt schon in dem grundsaetzlichen Verhalten von ASP,
dass man keine Arrays in Aplication-Objekten speichern kann. (Laut MS)

Martin


"Roman Vottner" <vot...@chello.at> schrieb im Newsbeitrag
news:ePBK6.22825$za3.7...@news.chello.at...

Marco Reimann

unread,
May 11, 2001, 6:01:10 AM5/11/01
to
Um Variablen oder Objekte global (im Application Objekt) verfügbar zu machen,
müssen sie immer in der global.asa
(in Application_OnStart) deklariert werden, z.B.


Sub Application_OnStart()
Set Application("dic")=Server.CreateObject("Scripting.Dictionary")
end sub


Session-Variablen hingegen müssen nicht in der global.asa deklariert werden.


mfg
Marco Reimann

--

Jörg Gregorius

unread,
May 11, 2001, 6:04:04 AM5/11/01
to
Hallo,

dies ist nicht ganz richtig.

Man kann Array-Elemente in einem Dictionary-Object speichern. Wir haben das
praktiziert
und haben auch keine Probleme bei der Speicherung von Dictionary-Objekten
in Session und Application-Variablen.

Beste Grüße
Jörg

Martin Koreis <sd...@gmx.net> schrieb in im Newsbeitrag:
3afbb5f9$0$21737$45be...@newscene.com...

Roman Vottner

unread,
May 12, 2001, 1:00:29 PM5/12/01
to
Hallo Jörg,

Danke - das war die Lösung - hiermit kann ich genau das machen, was ich
haben wollte ;)

nochmals herzlichen Dank

cu,
Roman
www.rovoweb.net

"Jörg Gregorius" <j.gre...@dios-software.de> schrieb im Newsbeitrag
news:e5yyRff2AHA.2080@tkmsftngp02...

Volker Roth

unread,
May 18, 2001, 6:15:13 AM5/18/01
to
Hi,

>Um Variablen oder Objekte global (im Application Objekt) verfügbar zu machen,
>müssen sie immer in der global.asa
>(in Application_OnStart) deklariert werden, z.B.

Wie "global"? Habe eine Application-Variable die ich lustig verwende
ohne dass sie in global.asa jemals deklariert wurde. Bei genauer
Betrachtung deklariere ich sie überhaupt nicht gesondert, sondern
initialisiere sie einfach mit einem Wert.

ciao Volker

0 new messages