1*184e05d2SAndrew Rist' ************************************************************* 2*184e05d2SAndrew Rist' 3*184e05d2SAndrew Rist' Licensed to the Apache Software Foundation (ASF) under one 4*184e05d2SAndrew Rist' or more contributor license agreements. See the NOTICE file 5*184e05d2SAndrew Rist' distributed with this work for additional information 6*184e05d2SAndrew Rist' regarding copyright ownership. The ASF licenses this file 7*184e05d2SAndrew Rist' to you under the Apache License, Version 2.0 (the 8*184e05d2SAndrew Rist' "License")' you may not use this file except in compliance 9*184e05d2SAndrew Rist' with the License. You may obtain a copy of the License at 10*184e05d2SAndrew Rist' 11*184e05d2SAndrew Rist' http://www.apache.org/licenses/LICENSE-2.0 12*184e05d2SAndrew Rist' 13*184e05d2SAndrew Rist' Unless required by applicable law or agreed to in writing, 14*184e05d2SAndrew Rist' software distributed under the License is distributed on an 15*184e05d2SAndrew Rist' "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*184e05d2SAndrew Rist' KIND, either express or implied. See the License for the 17*184e05d2SAndrew Rist' specific language governing permissions and limitations 18*184e05d2SAndrew Rist' under the License. 19*184e05d2SAndrew Rist' 20*184e05d2SAndrew Rist' ************************************************************* 21*184e05d2SAndrew Rist 22cdf0e10cSrcweirSub Main 23cdf0e10cSrcweir ' Oeffnen der LOG-Datei 24cdf0e10cSrcweir ' Es gibt 2 Moeglichgkeiten, diesen Test zu absolvieren. 25cdf0e10cSrcweir ' 1) Ausgabe von Informationen in MessageBoxen 26cdf0e10cSrcweir ' 2) Ausgabe von Informationen in einer LOG-Datei 27cdf0e10cSrcweir ' 28cdf0e10cSrcweir ' Die Methoden OpenLOG, CloseLOG, Message, ErrorMessage und InfoMessage beruecksichtigen das automatisch! 29cdf0e10cSrcweir ' Zum Umschalten zwischen den beiden Zustaenden genuegt es, eine der folgenden 30cdf0e10cSrcweir ' zwei Programmzeilen zu aktivieren ... 31cdf0e10cSrcweir 32cdf0e10cSrcweir 'bLOGOn = cOn 33cdf0e10cSrcweir bLOGOn = cOff 34cdf0e10cSrcweir 35cdf0e10cSrcweir 'bShowErrorsOnly = cOn 36cdf0e10cSrcweir bShowErrorsOnly = cOff 37cdf0e10cSrcweir 38cdf0e10cSrcweir OpenLOG ( cTestPath + "TestDocumentProperties.log" ) 39cdf0e10cSrcweir InfoMessage ( "Test DocumentProperties ... [start]" ) 40cdf0e10cSrcweir 41cdf0e10cSrcweir ' Service besorgen 42cdf0e10cSrcweir InfoMessage ( "Service besorgen ... [start]" ) 43cdf0e10cSrcweir aDocumentProperties = createUnoService ( "com.sun.star.document.DocumentProperties" ) 44cdf0e10cSrcweir 45cdf0e10cSrcweir ' Erfolg abtesten 46cdf0e10cSrcweir if ( isnull ( aDocumentProperties ) ) then 47cdf0e10cSrcweir ErrorMessage ( "Service konnte nicht instanziiert werden!" ) 48cdf0e10cSrcweir exit sub 49cdf0e10cSrcweir else 50cdf0e10cSrcweir InfoMessage ( "Service erfolgreich instanziiert ..." ) 51cdf0e10cSrcweir InfoMessage ( "Service besorgen ... [ende]" ) 52cdf0e10cSrcweir end if 53cdf0e10cSrcweir 54cdf0e10cSrcweir ' Unterstuetzte Schnittstellen, Methoden und Properties anzeigen 55cdf0e10cSrcweir ' Achtung: Methoden und Properties koennen nicht angezeigt werden ... 56cdf0e10cSrcweir ' neues Uno <-> Basic !? 57cdf0e10cSrcweir msgbox aDocumentProperties.dbg_supportedInterfaces 58cdf0e10cSrcweir 'msgbox aDocumentProperties.dbg_methods 59cdf0e10cSrcweir 'msgbox aDocumentProperties.dbg_properties 60cdf0e10cSrcweir 61cdf0e10cSrcweir ' Testen des Services unter normalen Bedingungen (also wie vorgesehen) 62cdf0e10cSrcweir bState = Test_NormalUse ( aDocumentProperties ) 63cdf0e10cSrcweir ' Fehlerstatus abfragen 64cdf0e10cSrcweir if ( bState = cError ) then 65cdf0e10cSrcweir ErrorMessage ( "Der Service arbeitet unter normalen Bedingungen nicht korrekt!" ) 66cdf0e10cSrcweir end if 67cdf0e10cSrcweir 68cdf0e10cSrcweir bState = Test_ErrorUse ( aDocumentProperties ) 69cdf0e10cSrcweir ' Fehlerstatus abfragen 70cdf0e10cSrcweir if ( bState = cError ) then 71cdf0e10cSrcweir ErrorMessage ( "Der Service verhaelt sich in Fehlersituationen nicht korrekt!" ) 72cdf0e10cSrcweir end if 73cdf0e10cSrcweir 74cdf0e10cSrcweir ' Schliessen der Error-Logdatei 75cdf0e10cSrcweir InfoMessage ( "Test DocumentProperties ... [ende]" ) 76cdf0e10cSrcweir CloseLOG 77cdf0e10cSrcweirEnd Sub 78cdf0e10cSrcweir 79cdf0e10cSrcweir'***************************************************************************************************************** 80cdf0e10cSrcweir' Testfunktionen 81cdf0e10cSrcweir'***************************************************************************************************************** 82cdf0e10cSrcweir 83cdf0e10cSrcweir'---------------------------------------------------------------------------- 84cdf0e10cSrcweir' Testmethode: Testet den Service unter normalen Bedingungen 85cdf0e10cSrcweir' 86cdf0e10cSrcweir' Returnwert cOK bedeutet, dass sich das Objekt normal verhaelt ... 87cdf0e10cSrcweir' Returnwert cError bedeutet, dass sich das ein Fehler aufgetreten ist ... 88cdf0e10cSrcweir'---------------------------------------------------------------------------- 89cdf0e10cSrcweirFunction Test_NormalUse ( aDocumentProperties ) as Boolean 90cdf0e10cSrcweir 91cdf0e10cSrcweir ' Zunaechst wird vom Erfolg des Test ausgegangen. 92cdf0e10cSrcweir ' Sollte einer der Detail-Tests fehlschlagen, dann wird dieser Wert 93cdf0e10cSrcweir ' zurueckgesetzt. Damit wird dann angezeigt, dass mindestens ein 94cdf0e10cSrcweir ' Einzeltest nicht korrekt funktionierte. 95cdf0e10cSrcweir 96cdf0e10cSrcweir Test_NormalUse = cOK 97cdf0e10cSrcweir 98cdf0e10cSrcweir bState = Test_NormalUse_XPropertySet ( aDocumentProperties ) 99cdf0e10cSrcweir if ( bState = cError ) then 100cdf0e10cSrcweir Test_NormalUse = cError 101cdf0e10cSrcweir end if 102cdf0e10cSrcweir 103cdf0e10cSrcweir bState = Test_NormalUse_XNameContainer ( aDocumentProperties ) 104cdf0e10cSrcweir if ( bState = cError ) then 105cdf0e10cSrcweir Test_NormalUse = cError 106cdf0e10cSrcweir end if 107cdf0e10cSrcweir 108cdf0e10cSrcweir bState = Test_NormalUse_XPersist ( aDocumentProperties ) 109cdf0e10cSrcweir if ( bState = cError ) then 110cdf0e10cSrcweir Test_NormalUse = cError 111cdf0e10cSrcweir end if 112cdf0e10cSrcweir 113cdf0e10cSrcweirEnd Function 114cdf0e10cSrcweir 115cdf0e10cSrcweir'---------------------------------------------------------------------------- 116cdf0e10cSrcweir' Testmethode: Testet den Service unter Randbedingungen und provoziert Fehlerzustaende 117cdf0e10cSrcweir' 118cdf0e10cSrcweir' Returnwert cOK bedeutet, dass das Objekt damit keine Probleme hat ... 119cdf0e10cSrcweir' Returnwert cError bedeutet, dass das Objekt noch nicht robust genug ist ... 120cdf0e10cSrcweir'---------------------------------------------------------------------------- 121cdf0e10cSrcweirFunction Test_ErrorUse ( aDocumentProperties ) as Boolean 122cdf0e10cSrcweir 123cdf0e10cSrcweir Test_ErrorUse = cOK 124cdf0e10cSrcweir 125cdf0e10cSrcweirEnd Function 126cdf0e10cSrcweir 127cdf0e10cSrcweir'---------------------------------------------------------------------------- 128cdf0e10cSrcweir' Testmethode: Testen des unterstuetzten Interfaces "XPropertySet" unter normalen Bedingungen 129cdf0e10cSrcweir' 130cdf0e10cSrcweir' Returnwert = cOK ; wenn der Test erfolgreich war 131cdf0e10cSrcweir' Returnwert = cError ; wenn sich das Objekt nicht korrekt verhalten hat 132cdf0e10cSrcweir'---------------------------------------------------------------------------- 133cdf0e10cSrcweirFunction Test_NormalUse_XPropertySet ( aDocumentProperties ) as Boolean 134cdf0e10cSrcweir 135cdf0e10cSrcweir ' Einschalten der Fehlerbehandlung, um Exceptions oder aehnliches abzufangen! 136cdf0e10cSrcweir on Error goto Test_NormalUse_XPropertySet_Error 137cdf0e10cSrcweir 138cdf0e10cSrcweir InfoMessage ( "Test_NormalUse_XPropertySet ... [start]" ) 139cdf0e10cSrcweir 140cdf0e10cSrcweir ' 1) Test der Funktion "getPropertySetInfo()" 141cdf0e10cSrcweir ' Da diese Funktion keine Parameter besitzt und zudem eine "get"-Methode 142cdf0e10cSrcweir ' darstellt, wird sie durch Basic automatisch als "Property" behandelt! 143cdf0e10cSrcweir ' Daher schreibt man nicht "getPropertySetInfo()" sondern nur "PropertySetInfo". 144cdf0e10cSrcweir 145cdf0e10cSrcweir ' Besorgen der Info 146cdf0e10cSrcweir PropertySetInfo = aDocumentProperties.PropertySetInfo 147cdf0e10cSrcweir ' Und abtesten auf Gueltigkeit 148cdf0e10cSrcweir if ( isnull (PropertySetInfo) ) then 149cdf0e10cSrcweir ErrorMessage ( "getPropertySetInfo() ... Error (Keine Info bestimmbar!)" ) 150cdf0e10cSrcweir goto Test_NormalUse_XPropertySet_Error 151cdf0e10cSrcweir end if 152cdf0e10cSrcweir 153cdf0e10cSrcweir ' Hier fehlt noch der Test der InfoStruktur! (Laesst sich unter Basic irgendwie NICHT testen!!!???) 154cdf0e10cSrcweir ' ... 155cdf0e10cSrcweir 156cdf0e10cSrcweir InfoMessage ( "getPropertySetInfo() ... OK" ) 157cdf0e10cSrcweir 158cdf0e10cSrcweir ' 2) getPropertyValue() & setPropertyValue () 159cdf0e10cSrcweir ' In diesem Service sind mehrere Properties bereits definiert und vorbelegt. 160cdf0e10cSrcweir ' Zum Test werden repraesentativ einige davon verwendet. Naemlich je eine 161cdf0e10cSrcweir ' der verschiedenen Datentypen! 162cdf0e10cSrcweir ' Das sind im folgenden: OWString, sal_Bool, sal_Int16, sal_uInt16, sal_Int32, DateTime, Sequence< sal_Int8 > 163cdf0e10cSrcweir ' Achtung! sal_uInt16 kann in Basic so nicht dargestellt werden. Daher wird ein normaler 164cdf0e10cSrcweir ' Integer-Wert angenommen - Bedingung ist, das hier im Test der Wertebereich nicht 165cdf0e10cSrcweir ' ueberschritten wird! 166cdf0e10cSrcweir ' Es wird versucht den Standardwert dieser zu ermitteln und zu merken; 167cdf0e10cSrcweir ' dann einen neuen Wert zu setzen; sowie diesen wiederum zu lesen und mit den 168cdf0e10cSrcweir ' vorherigen Werten zu vergleichen! 169cdf0e10cSrcweir 170cdf0e10cSrcweir ' Zunaechst werden die Standardwerte dieser Properties besorgt ... 171cdf0e10cSrcweir sDefaultValue_OWString$ = aDocumentProperties.getPropertyValue ( "Author" ) 172cdf0e10cSrcweir bDefaultValue_sal_Bool = aDocumentProperties.getPropertyValue ( "AutoloadEnabled" ) 173cdf0e10cSrcweir nDefaultValue_sal_Int16% = aDocumentProperties.getPropertyValue ( "EditingCycles" ) 174cdf0e10cSrcweir nDefaultValue_sal_uInt16% = aDocumentProperties.getPropertyValue ( "Priority" ) 175cdf0e10cSrcweir nDefaultValue_sal_Int32& = aDocumentProperties.getPropertyValue ( "EditingDuration" ) 176cdf0e10cSrcweir aDefaultValue_DateTime = aDocumentProperties.getPropertyValue ( "ModifyDate" ) 177cdf0e10cSrcweir' aDefaultValue_ByteSequence = aDocumentProperties.getPropertyValue ( "ExtraData" ) 178cdf0e10cSrcweir aDefaultValue_ByteSequence = aDocumentProperties.ExtraData 179cdf0e10cSrcweir 180cdf0e10cSrcweir ' ... dann die Werte zur Kontrolle ausgeben. 181cdf0e10cSrcweir ShowProperties ( aDocumentProperties ) 182cdf0e10cSrcweir 183cdf0e10cSrcweir InfoMessage ( "getPropertyValue() ... OK" ) 184cdf0e10cSrcweir 185cdf0e10cSrcweir ' Jetzt werden neue Werte vereinbart ... 186cdf0e10cSrcweir ' Diese werden so gewaehlt, das sie garantiert von den Standardwerten verschieden sind! 187cdf0e10cSrcweir ' Dazu werden die alten auf Wert abgefragt und entsprechend die neuen gesetzt. 188cdf0e10cSrcweir sNewValue_OWString$ = sDefaultValue_OWString$ + "NeuerWert" 189cdf0e10cSrcweir bNewValue_sal_Bool = not bDefaultValue_sal_Bool 190cdf0e10cSrcweir nNewValue_sal_Int16% = nDefaultValue_sal_Int16% + 1 191cdf0e10cSrcweir if ( nDefaultValue_sal_uInt16% = 1 ) then 192cdf0e10cSrcweir nNewValue_sal_uInt16% = 2 193cdf0e10cSrcweir else 194cdf0e10cSrcweir nNewValue_sal_uInt16% = 1 195cdf0e10cSrcweir end if 196cdf0e10cSrcweir nNewValue_sal_Int32& = nDefaultValue_sal_Int32& + 1 197cdf0e10cSrcweir 198cdf0e10cSrcweir aNewValue_DateTime = aDefaultValue_DateTime 199cdf0e10cSrcweir aNewValue_DateTime.HundredthSeconds = aDefaultValue_DateTime.HundredthSeconds + 1 200cdf0e10cSrcweir aNewValue_DateTime.Seconds = aDefaultValue_DateTime.Seconds + 1 201cdf0e10cSrcweir aNewValue_DateTime.Minutes = aDefaultValue_DateTime.Minutes + 1 202cdf0e10cSrcweir aNewValue_DateTime.Hours = aDefaultValue_DateTime.Hours + 1 203cdf0e10cSrcweir aNewValue_DateTime.Day = aDefaultValue_DateTime.Day + 1 204cdf0e10cSrcweir aNewValue_DateTime.Month = aDefaultValue_DateTime.Month + 1 205cdf0e10cSrcweir aNewValue_DateTime.Year = aDefaultValue_DateTime.Year + 1 206cdf0e10cSrcweir 207cdf0e10cSrcweir aNewValue_ByteSequence = aDefaultValue_ByteSequence 208cdf0e10cSrcweir nElementCount% = UBound ( aDefaultValue_ByteSequence ) 209cdf0e10cSrcweir' for nCounter%=0 to nElementCount% step 1 210cdf0e10cSrcweir' aNewValue_ByteSequence(nCounter%) = ( aDefaultValue_ByteSequence(nCounter%) + 1 ) 211cdf0e10cSrcweir' next nCounter% 212cdf0e10cSrcweir 213cdf0e10cSrcweir ' Anschliessend muessen diese neuen Werte gesetzt werden. 214cdf0e10cSrcweir aDocumentProperties.setPropertyValue ( "Author" , sNewValue_OWString$ ) 215cdf0e10cSrcweir aDocumentProperties.setPropertyValue ( "AutoloadEnabled", bNewValue_sal_Bool ) 216cdf0e10cSrcweir aDocumentProperties.setPropertyValue ( "EditingCycles" , nNewValue_sal_Int16% ) 217cdf0e10cSrcweir aDocumentProperties.setPropertyValue ( "Priority" , nNewValue_sal_uInt16% ) 218cdf0e10cSrcweir aDocumentProperties.setPropertyValue ( "EditingDuration", nNewValue_sal_Int32& ) 219cdf0e10cSrcweir aDocumentProperties.setPropertyValue ( "ModifyDate" , aNewValue_DateTime ) 220cdf0e10cSrcweir' aDocumentProperties.setPropertyValue ( "ExtraData" , aNewValue_ByteSequence ) 221cdf0e10cSrcweir aDocumentProperties.ExtraData = aNewValue_ByteSequence 222cdf0e10cSrcweir 223cdf0e10cSrcweir ' Dann lassen wir sie uns ausgeben, um sie mit den vorherigen vergleichen zu koennen. 224cdf0e10cSrcweir ' (Das geht natuerlich nur, wenn "bLOGOn=cOn" ist - also eine LOG-Datei geschrieben wird!) 225cdf0e10cSrcweir ShowProperties ( aDocumentProperties ) 226cdf0e10cSrcweir 227cdf0e10cSrcweir ' Nun werden die Properties wieder gelesen ... 228cdf0e10cSrcweir sLastValue_OWString$ = aDocumentProperties.getPropertyValue ( "Author" ) 229cdf0e10cSrcweir bLastValue_sal_Bool = aDocumentProperties.getPropertyValue ( "AutoloadEnabled" ) 230cdf0e10cSrcweir nLastValue_sal_Int16% = aDocumentProperties.getPropertyValue ( "EditingCycles" ) 231cdf0e10cSrcweir nLastValue_sal_uInt16% = aDocumentProperties.getPropertyValue ( "Priority" ) 232cdf0e10cSrcweir nLastValue_sal_Int32& = aDocumentProperties.getPropertyValue ( "EditingDuration" ) 233cdf0e10cSrcweir aLastValue_DateTime = aDocumentProperties.getPropertyValue ( "ModifyDate" ) 234cdf0e10cSrcweir aLastValue_ByteSequence = aDocumentProperties.getPropertyValue ( "ExtraData" ) 235cdf0e10cSrcweir 236cdf0e10cSrcweir ' ... und mit den vorher als zu setzend bestimmte Werte vergleichen! 237cdf0e10cSrcweir ' Es duerfen KEINE Unterschiede auftreten, da sonst "setPropertyValue()" nicht korrekt funktioniert hat! 238cdf0e10cSrcweir 239cdf0e10cSrcweir if ( CompareOWString ( sNewValue_OWString$, sLastValue_OWString$ ) = cDifferent ) then 240cdf0e10cSrcweir ErrorMessage ( "setPropertyValue() ... Fehler [OWString fehlerhaft]" ) 241cdf0e10cSrcweir goto Test_NormalUse_XPropertySet_Error 242cdf0e10cSrcweir elseif ( CompareBool ( bNewValue_sal_Bool, bLastValue_sal_Bool ) = cDifferent ) then 243cdf0e10cSrcweir ErrorMessage ( "setPropertyValue() ... Fehler [sal_Bool fehlerhaft]" ) 244cdf0e10cSrcweir goto Test_NormalUse_XPropertySet_Error 245cdf0e10cSrcweir elseif ( CompareInt16 ( nNewValue_sal_Int16%, nLastValue_sal_Int16% ) = cDifferent ) then 246cdf0e10cSrcweir ErrorMessage ( "setPropertyValue() ... Fehler [sal_Int16 fehlerhaft]" ) 247cdf0e10cSrcweir goto Test_NormalUse_XPropertySet_Error 248cdf0e10cSrcweir elseif ( CompareInt16 ( nNewValue_sal_uInt16%, nLastValue_sal_uInt16% ) = cDifferent ) then 249cdf0e10cSrcweir ErrorMessage ( "setPropertyValue() ... Fehler [sal_uInt16 fehlerhaft]" ) 250cdf0e10cSrcweir goto Test_NormalUse_XPropertySet_Error 251cdf0e10cSrcweir elseif ( CompareInt32 ( nNewValue_sal_Int32&, nLastValue_sal_Int32& ) = cDifferent ) then 252cdf0e10cSrcweir ErrorMessage ( "setPropertyValue() ... Fehler [sal_Int32 fehlerhaft]" ) 253cdf0e10cSrcweir goto Test_NormalUse_XPropertySet_Error 254cdf0e10cSrcweir elseif ( CompareDateTime ( aNewValue_DateTime, aLastValue_DateTime ) = cDifferent ) then 255cdf0e10cSrcweir ErrorMessage ( "setPropertyValue() ... Fehler [DateTime fehlerhaft]" ) 256cdf0e10cSrcweir goto Test_NormalUse_XPropertySet_Error 257cdf0e10cSrcweir elseif ( CompareByteSequence ( aNewValue_ByteSequence, aLastValue_ByteSequence ) = cDifferent ) then 258cdf0e10cSrcweir ErrorMessage ( "setPropertyValue() ... Fehler [ByteSequence fehlerhaft]" ) 259cdf0e10cSrcweir goto Test_NormalUse_XPropertySet_Error 260cdf0e10cSrcweir end if 261cdf0e10cSrcweir 262cdf0e10cSrcweir InfoMessage ( "setPropertyValue() ... OK" ) 263cdf0e10cSrcweir 264cdf0e10cSrcweir ' Nun wird noch mit den zuerst ermittelten Default-Werten verglichen! 265cdf0e10cSrcweir ' Hier MUESSEN Unterschiede auftreten, da sonst "get-" UND "setPropertyValue()" nicht korrekt funktioniert haben! 266cdf0e10cSrcweir 267cdf0e10cSrcweir if ( CompareOWString ( sDefaultValue_OWString$, sLastValue_OWString$ ) = cEqual ) then 268cdf0e10cSrcweir ErrorMessage ( "Zusammenspiel set & getPropertyValue() ... Fehler [OWString fehlerhaft]" ) 269cdf0e10cSrcweir goto Test_NormalUse_XPropertySet_Error 270cdf0e10cSrcweir elseif ( CompareBool ( bDefaultValue_sal_Bool, bLastValue_sal_Bool ) = cEqual ) then 271cdf0e10cSrcweir ErrorMessage ( "Zusammenspiel set & getPropertyValue() ... Fehler [sal_Bool fehlerhaft]" ) 272cdf0e10cSrcweir goto Test_NormalUse_XPropertySet_Error 273cdf0e10cSrcweir elseif ( CompareInt16 ( nDefaultValue_sal_Int16%, nLastValue_sal_Int16% ) = cEqual ) then 274cdf0e10cSrcweir ErrorMessage ( "Zusammenspiel set & getPropertyValue() ... Fehler [sal_Int16 fehlerhaft]" ) 275cdf0e10cSrcweir goto Test_NormalUse_XPropertySet_Error 276cdf0e10cSrcweir elseif ( CompareInt16 ( nDefaultValue_sal_uInt16%, nLastValue_sal_uInt16% ) = cEqual ) then 277cdf0e10cSrcweir ErrorMessage ( "Zusammenspiel set & getPropertyValue() ... Fehler [sal_uInt16 fehlerhaft]" ) 278cdf0e10cSrcweir goto Test_NormalUse_XPropertySet_Error 279cdf0e10cSrcweir elseif ( CompareInt32 ( nDefaultValue_sal_Int32&, nLastValue_sal_Int32& ) = cEqual ) then 280cdf0e10cSrcweir ErrorMessage ( "Zusammenspiel set & getPropertyValue() ... Fehler [sal_Int32 fehlerhaft]" ) 281cdf0e10cSrcweir goto Test_NormalUse_XPropertySet_Error 282cdf0e10cSrcweir elseif ( CompareDateTime ( aDefaultValue_DateTime, aLastValue_DateTime ) = cEqual ) then 283cdf0e10cSrcweir ErrorMessage ( "Zusammenspiel set & getPropertyValue() ... Fehler [DateTime fehlerhaft]" ) 284cdf0e10cSrcweir goto Test_NormalUse_XPropertySet_Error 285cdf0e10cSrcweir' elseif ( CompareByteSequence ( aDefaultValue_ByteSequence, aLastValue_ByteSequence ) = cEqual ) then 286cdf0e10cSrcweir' ErrorMessage ( "Zusammenspiel set & getPropertyValue() ... Fehler [ByteSequence fehlerhaft]" ) 287cdf0e10cSrcweir' goto Test_NormalUse_XPropertySet_Error 288cdf0e10cSrcweir end if 289cdf0e10cSrcweir 290cdf0e10cSrcweir InfoMessage ( "Zusammenspiel set & getPropertyValue() ... OK" ) 291cdf0e10cSrcweir 292cdf0e10cSrcweir ' Der Test war erfolgreich! Meldung ausgeben und zurueck zm Aufrufer. 293cdf0e10cSrcweir ' Ausschalten der Fehlerbehandlung 294cdf0e10cSrcweir on Error goto 0 295cdf0e10cSrcweir ' Meldung ausgeben 296cdf0e10cSrcweir InfoMessage ( "Test_NormalUse_XPropertySet ... [ende]" ) 297cdf0e10cSrcweir ' Status setzen 298cdf0e10cSrcweir Test_NormalUse_XPropertySet = cOK 299cdf0e10cSrcweir ' Und Funktion beenden 300cdf0e10cSrcweir Exit Function 301cdf0e10cSrcweir 302cdf0e10cSrcweir' Es ist ein unerwartete Fehler aufgetreten! (Exception ...) 303cdf0e10cSrcweir' Meldung ausgeben und mit Fehler zurueckkehren. 304cdf0e10cSrcweirTest_NormalUse_XPropertySet_Error: 305cdf0e10cSrcweir ' Ausschalten der Fehlerbehandlung 306cdf0e10cSrcweir on Error goto 0 307cdf0e10cSrcweir ' Meldung ausgeben 308cdf0e10cSrcweir ErrorMessage ( "Test_NormalUse_XPropertySet ... [Error]" ) 309cdf0e10cSrcweir ' und Fehlerstatus setzen 310cdf0e10cSrcweir Test_NormalUse_XPropertySet = cError 311cdf0e10cSrcweir ' Abbruch der Funktion erzwingen! 312cdf0e10cSrcweir Exit Function 313cdf0e10cSrcweir 314cdf0e10cSrcweirEnd Function 315cdf0e10cSrcweir 316cdf0e10cSrcweir'---------------------------------------------------------------------------- 317cdf0e10cSrcweir' Testmethode: Testen des unterstuetzten Interfaces "XNameContainer" unter normalen Bedingungen 318cdf0e10cSrcweir' 319cdf0e10cSrcweir' Returnwert = cOK ; wenn sich das Objekt korrekt verhalten hat 320cdf0e10cSrcweir' Returnwert = cError ; wenn das Objekt noch nicht robust genug ist 321cdf0e10cSrcweir'---------------------------------------------------------------------------- 322cdf0e10cSrcweirFunction Test_NormalUse_XNameContainer ( aDocumentProperties ) as Boolean 323cdf0e10cSrcweir 324cdf0e10cSrcweir ' Einschalten der Fehlerbehandlung, um Exceptions oder aehnliches abzufangen! 325cdf0e10cSrcweir on Error goto Test_NormalUse_XNameContainer_Error 326cdf0e10cSrcweir 327cdf0e10cSrcweir InfoMessage ( "Test_NormalUse_XNameContainer ... [start]" ) 328cdf0e10cSrcweir 329cdf0e10cSrcweir ' Da das Initialisieren im Konstruktor des Objektes und das Aufraeumen im Destruktor 330cdf0e10cSrcweir ' automatisch geschieht und diese Methode pro Programmablauf nur einmal verwendet wird, 331cdf0e10cSrcweir ' darf sich kein Element schon im NameContainer befinden! 332cdf0e10cSrcweir ' Wenn doch, ist das ein Fehler! 333cdf0e10cSrcweir if ( aDocumentProperties.hasElements () = TRUE ) then 334cdf0e10cSrcweir ErrorMessage ( "Der NameConatiner sollte eigentlich leer sein, enthaelt initial aber schon Elemente!?" ) 335cdf0e10cSrcweir goto Test_NormalUse_XNameContainer_Error 336cdf0e10cSrcweir end if 337cdf0e10cSrcweir 338cdf0e10cSrcweir ' Zunaechst werden mehrere Elemente in den NameContainer eingefuegt. 339cdf0e10cSrcweir sItemName_1$ = "Item 1" 340cdf0e10cSrcweir sItemName_2$ = "Item 2" 341cdf0e10cSrcweir sItemName_3$ = "Item 3" 342cdf0e10cSrcweir sItemName_4$ = "Item 4" 343cdf0e10cSrcweir sItemName_5$ = "Item 5" 344cdf0e10cSrcweir 345cdf0e10cSrcweir sFirstValue_1$ = "Value 1" 346cdf0e10cSrcweir sFirstValue_2$ = "Value 2" 347cdf0e10cSrcweir sFirstValue_3$ = "Value 3" 348cdf0e10cSrcweir sFirstValue_4$ = "Value 4" 349cdf0e10cSrcweir sFirstValue_5$ = "Value 5" 350cdf0e10cSrcweir 351cdf0e10cSrcweir aDocumentProperties.insertByName ( sItemName_1$, sFirstValue_1$ ) 352cdf0e10cSrcweir aDocumentProperties.insertByName ( sItemName_2$, sFirstValue_2$ ) 353cdf0e10cSrcweir aDocumentProperties.insertByName ( sItemName_3$, sFirstValue_3$ ) 354cdf0e10cSrcweir aDocumentProperties.insertByName ( sItemName_4$, sFirstValue_4$ ) 355cdf0e10cSrcweir aDocumentProperties.insertByName ( sItemName_5$, sFirstValue_5$ ) 356cdf0e10cSrcweir 357cdf0e10cSrcweir ' Zur Kontrolle die Werte ausgeben. (Nur wichtig, wenn geloggt wird!) 358cdf0e10cSrcweir ' Dabei wird die Methode "getElementNames()" gleich implizit mitgetestet! 359cdf0e10cSrcweir ShowNameContainer ( aDocumentProperties ) 360cdf0e10cSrcweir 361cdf0e10cSrcweir ' Aber auch die Anzahl kontrollieren. 362cdf0e10cSrcweir ' (Hier wird eine eigene BASIC-Hilfsfunktion verwendet! keine Interface-Methode) 363cdf0e10cSrcweir if ( getNameContainerCount ( aDocumentProperties ) <> 5 ) then 364cdf0e10cSrcweir ErrorMessage ( "insertByName() ... Fehler (Der NameConatiner enthaelt nicht die eingefuegten 5 Elemente!)" ) 365cdf0e10cSrcweir goto Test_NormalUse_XNameContainer_Error 366cdf0e10cSrcweir end if 367cdf0e10cSrcweir 368cdf0e10cSrcweir ' Nun noch feststellen, ob die 5 denn auch tatsaechlich vorhanden sind. 369cdf0e10cSrcweir if ( aDocumentProperties.hasByName ( sItemName_1$ ) = FALSE ) then 370cdf0e10cSrcweir ErrorMessage ( "hasByName() ... Fehler [Element 1 nicht vorhanden!?]" ) 371cdf0e10cSrcweir goto Test_NormalUse_XNameContainer_Error 372cdf0e10cSrcweir elseif ( aDocumentProperties.hasByName ( sItemName_2$ ) = FALSE ) then 373cdf0e10cSrcweir ErrorMessage ( "hasByName() ... Fehler [Element 2 nicht vorhanden!?]" ) 374cdf0e10cSrcweir goto Test_NormalUse_XNameContainer_Error 375cdf0e10cSrcweir elseif ( aDocumentProperties.hasByName ( sItemName_3$ ) = FALSE ) then 376cdf0e10cSrcweir ErrorMessage ( "hasByName() ... Fehler [Element 3 nicht vorhanden!?]" ) 377cdf0e10cSrcweir goto Test_NormalUse_XNameContainer_Error 378cdf0e10cSrcweir elseif ( aDocumentProperties.hasByName ( sItemName_4$ ) = FALSE ) then 379cdf0e10cSrcweir ErrorMessage ( "hasByName() ... Fehler [Element 4 nicht vorhanden!?]" ) 380cdf0e10cSrcweir goto Test_NormalUse_XNameContainer_Error 381cdf0e10cSrcweir elseif ( aDocumentProperties.hasByName ( sItemName_5$ ) = FALSE ) then 382cdf0e10cSrcweir ErrorMessage ( "hasByName() ... Fehler [Element 5 nicht vorhanden!?]" ) 383cdf0e10cSrcweir goto Test_NormalUse_XNameContainer_Error 384cdf0e10cSrcweir end if 385cdf0e10cSrcweir 386cdf0e10cSrcweir ' Dann die Werte wieder auslesen. 387cdf0e10cSrcweir sCompareValue_1$ = aDocumentProperties.getByName ( sItemName_1$ ) 388cdf0e10cSrcweir sCompareValue_2$ = aDocumentProperties.getByName ( sItemName_2$ ) 389cdf0e10cSrcweir sCompareValue_3$ = aDocumentProperties.getByName ( sItemName_3$ ) 390cdf0e10cSrcweir sCompareValue_4$ = aDocumentProperties.getByName ( sItemName_4$ ) 391cdf0e10cSrcweir sCompareValue_5$ = aDocumentProperties.getByName ( sItemName_5$ ) 392cdf0e10cSrcweir 393cdf0e10cSrcweir ' Zum Vergleich die Werte ausgeben. (Nur wichtig, wenn geloggt wird!) 394cdf0e10cSrcweir ShowNameContainer ( aDocumentProperties ) 395cdf0e10cSrcweir 396cdf0e10cSrcweir ' Dann die Werte automatisch vergleichen! 397cdf0e10cSrcweir if ( CompareOWString ( sFirstValue_1$, sCompareValue_1$ ) = cDifferent ) then 398cdf0e10cSrcweir ErrorMessage ( "getByName() ... Fehler [Element 1 fehlerhaft]" ) 399cdf0e10cSrcweir goto Test_NormalUse_XNameContainer_Error 400cdf0e10cSrcweir elseif ( CompareOWString ( sFirstValue_2$, sCompareValue_2$ ) = cDifferent ) then 401cdf0e10cSrcweir ErrorMessage ( "getByName() ... Fehler [Element 2 fehlerhaft]" ) 402cdf0e10cSrcweir goto Test_NormalUse_XNameContainer_Error 403cdf0e10cSrcweir elseif ( CompareOWString ( sFirstValue_3$, sCompareValue_3$ ) = cDifferent ) then 404cdf0e10cSrcweir ErrorMessage ( "getByName() ... Fehler [Element 3 fehlerhaft]" ) 405cdf0e10cSrcweir goto Test_NormalUse_XNameContainer_Error 406cdf0e10cSrcweir elseif ( CompareOWString ( sFirstValue_4$, sCompareValue_4$ ) = cDifferent ) then 407cdf0e10cSrcweir ErrorMessage ( "getByName() ... Fehler [Element 4 fehlerhaft]" ) 408cdf0e10cSrcweir goto Test_NormalUse_XNameContainer_Error 409cdf0e10cSrcweir elseif ( CompareOWString ( sFirstValue_5$, sCompareValue_5$ ) = cDifferent ) then 410cdf0e10cSrcweir ErrorMessage ( "getByName() ... Fehler [Element 5 fehlerhaft]" ) 411cdf0e10cSrcweir goto Test_NormalUse_XNameContainer_Error 412cdf0e10cSrcweir end if 413cdf0e10cSrcweir 414cdf0e10cSrcweir InfoMessage ( "getByName() ... OK" ) 415cdf0e10cSrcweir 416cdf0e10cSrcweir ' Jetzt wird versucht einige der Elemente in ihrem Wert zu veraendern. 417cdf0e10cSrcweir sNewValue_1$ = "NewValue 1" 418cdf0e10cSrcweir sNewValue_2$ = "NewValue 2" 419cdf0e10cSrcweir sNewValue_3$ = "NewValue 3" 420cdf0e10cSrcweir sNewValue_4$ = "NewValue 4" 421cdf0e10cSrcweir sNewValue_5$ = "NewValue 5" 422cdf0e10cSrcweir 423cdf0e10cSrcweir aDocumentProperties.replaceByName ( sItemName_1$, sNewValue_1$ ) 424cdf0e10cSrcweir aDocumentProperties.replaceByName ( sItemName_2$, sNewValue_2$ ) 425cdf0e10cSrcweir aDocumentProperties.replaceByName ( sItemName_3$, sNewValue_3$ ) 426cdf0e10cSrcweir aDocumentProperties.replaceByName ( sItemName_4$, sNewValue_4$ ) 427cdf0e10cSrcweir aDocumentProperties.replaceByName ( sItemName_5$, sNewValue_5$ ) 428cdf0e10cSrcweir 429cdf0e10cSrcweir ' Zur Kontrolle die Werte ausgeben. (Nur wichtig, wenn geloggt wird!) 430cdf0e10cSrcweir ShowNameContainer ( aDocumentProperties ) 431cdf0e10cSrcweir 432cdf0e10cSrcweir ' Dann die Werte wieder auslesen. 433cdf0e10cSrcweir sCompareValue_1$ = aDocumentProperties.getByName ( sItemName_1$ ) 434cdf0e10cSrcweir sCompareValue_2$ = aDocumentProperties.getByName ( sItemName_2$ ) 435cdf0e10cSrcweir sCompareValue_3$ = aDocumentProperties.getByName ( sItemName_3$ ) 436cdf0e10cSrcweir sCompareValue_4$ = aDocumentProperties.getByName ( sItemName_4$ ) 437cdf0e10cSrcweir sCompareValue_5$ = aDocumentProperties.getByName ( sItemName_5$ ) 438cdf0e10cSrcweir 439cdf0e10cSrcweir ' Zum Vergleich die Werte ausgeben. (Nur wichtig, wenn geloggt wird!) 440cdf0e10cSrcweir ShowNameContainer ( aDocumentProperties ) 441cdf0e10cSrcweir 442cdf0e10cSrcweir ' Dann die Werte automatisch vergleichen! 443cdf0e10cSrcweir if ( CompareOWString ( sNewValue_1$, sCompareValue_1$ ) = cDifferent ) then 444cdf0e10cSrcweir ErrorMessage ( "replaceByName() ... Fehler [Element 1 fehlerhaft]" ) 445cdf0e10cSrcweir goto Test_NormalUse_XNameContainer_Error 446cdf0e10cSrcweir elseif ( CompareOWString ( sNewValue_2$, sCompareValue_2$ ) = cDifferent ) then 447cdf0e10cSrcweir ErrorMessage ( "replaceByName() ... Fehler [Element 2 fehlerhaft]" ) 448cdf0e10cSrcweir goto Test_NormalUse_XNameContainer_Error 449cdf0e10cSrcweir elseif ( CompareOWString ( sNewValue_3$, sCompareValue_3$ ) = cDifferent ) then 450cdf0e10cSrcweir ErrorMessage ( "replaceByName() ... Fehler [Element 3 fehlerhaft]" ) 451cdf0e10cSrcweir goto Test_NormalUse_XNameContainer_Error 452cdf0e10cSrcweir elseif ( CompareOWString ( sNewValue_4$, sCompareValue_4$ ) = cDifferent ) then 453cdf0e10cSrcweir ErrorMessage ( "replaceByName() ... Fehler [Element 4 fehlerhaft]" ) 454cdf0e10cSrcweir goto Test_NormalUse_XNameContainer_Error 455cdf0e10cSrcweir elseif ( CompareOWString ( sNewValue_5$, sCompareValue_5$ ) = cDifferent ) then 456cdf0e10cSrcweir ErrorMessage ( "replaceByName() ... Fehler [Element 5 fehlerhaft]" ) 457cdf0e10cSrcweir goto Test_NormalUse_XNameContainer_Error 458cdf0e10cSrcweir end if 459cdf0e10cSrcweir 460cdf0e10cSrcweir InfoMessage ( "replaceByName() ... OK" ) 461cdf0e10cSrcweir 462cdf0e10cSrcweir ' Hier sollen einige der 5 Eintraege geloescht werden. 463cdf0e10cSrcweir aDocumentProperties.removeByName ( sItemName_1$ ) 464cdf0e10cSrcweir aDocumentProperties.removeByName ( sItemName_3$ ) 465cdf0e10cSrcweir 466cdf0e10cSrcweir ' Dann wieder die Anzahl kontrollieren. 467cdf0e10cSrcweir ' (Hier wird eine eigene BASIC-Hilfsfunktion verwendet! keine Interface-Methode) 468cdf0e10cSrcweir if ( getNameContainerCount ( aDocumentProperties ) <> 3 ) then 469cdf0e10cSrcweir ErrorMessage ( "removeByName() ... Fehler (Der NameConatiner enthaelt nicht die erwarteten 3 Elemente!)" ) 470cdf0e10cSrcweir goto Test_NormalUse_XNameContainer_Error 471cdf0e10cSrcweir end if 472cdf0e10cSrcweir 473cdf0e10cSrcweir ' Nun noch feststellen, ob die restlichen 3 denn auch tatsaechlich die richtigen sind. 474cdf0e10cSrcweir if ( aDocumentProperties.hasByName ( sItemName_2$ ) = FALSE ) then 475cdf0e10cSrcweir ErrorMessage ( "removeByName() ... Fehler [Element 2 nicht vorhanden!?]" ) 476cdf0e10cSrcweir goto Test_NormalUse_XNameContainer_Error 477cdf0e10cSrcweir elseif ( aDocumentProperties.hasByName ( sItemName_4$ ) = FALSE ) then 478cdf0e10cSrcweir ErrorMessage ( "removeByName() ... Fehler [Element 4 nicht vorhanden!?]" ) 479cdf0e10cSrcweir goto Test_NormalUse_XNameContainer_Error 480cdf0e10cSrcweir elseif ( aDocumentProperties.hasByName ( sItemName_5$ ) = FALSE ) then 481cdf0e10cSrcweir ErrorMessage ( "removeByName() ... Fehler [Element 5 nicht vorhanden!?]" ) 482cdf0e10cSrcweir goto Test_NormalUse_XNameContainer_Error 483cdf0e10cSrcweir end if 484cdf0e10cSrcweir 485cdf0e10cSrcweir ' Zur Kontrolle die Werte nochmals ausgeben. (Nur wichtig, wenn geloggt wird!) 486cdf0e10cSrcweir ShowNameContainer ( aDocumentProperties ) 487cdf0e10cSrcweir 488cdf0e10cSrcweir InfoMessage ( "removeByName() ... OK" ) 489cdf0e10cSrcweir 490cdf0e10cSrcweir ' Der Test war erfolgreich! Meldung ausgeben und zurueck zm Aufrufer. 491cdf0e10cSrcweir ' Ausschalten der Fehlerbehandlung 492cdf0e10cSrcweir on Error goto 0 493cdf0e10cSrcweir ' Meldung ausgeben 494cdf0e10cSrcweir InfoMessage ( "Test_NormalUse_XNameContainer ... [ende]" ) 495cdf0e10cSrcweir ' Status setzen 496cdf0e10cSrcweir Test_NormalUse_XNameContainer = cOK 497cdf0e10cSrcweir ' Und Funktion beenden 498cdf0e10cSrcweir Exit Function 499cdf0e10cSrcweir 500cdf0e10cSrcweir' Es ist ein unerwartete Fehler aufgetreten! (Exception ...) 501cdf0e10cSrcweir' Meldung ausgeben und mit Fehler zurueckkehren. 502cdf0e10cSrcweirTest_NormalUse_XNameContainer_Error: 503cdf0e10cSrcweir ' Ausschalten der Fehlerbehandlung 504cdf0e10cSrcweir on Error goto 0 505cdf0e10cSrcweir ' Meldung ausgeben 506cdf0e10cSrcweir ErrorMessage ( "Test_NormalUse_XNameContainer ... [Error]" ) 507cdf0e10cSrcweir ' und Fehlerstatus setzen 508cdf0e10cSrcweir Test_NormalUse_XNameContainer = cError 509cdf0e10cSrcweir ' Abbruch der Funktion erzwingen! 510cdf0e10cSrcweir Exit Function 511cdf0e10cSrcweir 512cdf0e10cSrcweirEnd Function 513cdf0e10cSrcweir 514cdf0e10cSrcweir'---------------------------------------------------------------------------- 515cdf0e10cSrcweir' Testmethode: Testen des unterstuetzten Interfaces "XPersist" unter normalen Bedingungen 516cdf0e10cSrcweir' 517cdf0e10cSrcweir' Returnwert = cOK ; wenn der Test erfolgreich war 518cdf0e10cSrcweir' Returnwert = cError ; wenn sich das Objekt nicht korrekt verhalten hat 519cdf0e10cSrcweir'---------------------------------------------------------------------------- 520cdf0e10cSrcweirFunction Test_NormalUse_XPersist ( aDocumentProperties ) as Boolean 521cdf0e10cSrcweir 522cdf0e10cSrcweir ' Einschalten der Fehlerbehandlung, um Exceptions oder aehnliches abzufangen! 523cdf0e10cSrcweir on Error goto Test_NormalUse_XPersist_Error 524cdf0e10cSrcweir 525cdf0e10cSrcweir InfoMessage ( "Test_NormalUse_XPersist ... [start]" ) 526cdf0e10cSrcweir 527cdf0e10cSrcweir ' Laden der Properties aus einer Datei 528cdf0e10cSrcweir aDocumentProperties.read ( cTestPath + "TestDebug_in.sdw" ) 529cdf0e10cSrcweir 530cdf0e10cSrcweir ' Zur Kontrolle anzeigen 531cdf0e10cSrcweir ShowProperties ( aDocumentProperties ) 532cdf0e10cSrcweir 533cdf0e10cSrcweir ' Speichern der Properties in einer neuen Datei 534cdf0e10cSrcweir aDocumentProperties.write ( cTestPath + "TestDebug_Out.sdw" ) 535cdf0e10cSrcweir aDocumentProperties.read ( cTestPath + "TestDebug_Out.sdw" ) 536cdf0e10cSrcweir 537cdf0e10cSrcweir ' Zur Kontrolle anzeigen 538cdf0e10cSrcweir ShowProperties ( aDocumentProperties ) 539cdf0e10cSrcweir 540cdf0e10cSrcweir ' Der Test war erfolgreich! Meldung ausgeben und zurueck zm Aufrufer. 541cdf0e10cSrcweir ' Ausschalten der Fehlerbehandlung 542cdf0e10cSrcweir on Error goto 0 543cdf0e10cSrcweir ' Meldung ausgeben 544cdf0e10cSrcweir InfoMessage ( "Test_NormalUse_XPersist ... [ende]" ) 545cdf0e10cSrcweir ' Status setzen 546cdf0e10cSrcweir Test_NormalUse_XPersist = cOK 547cdf0e10cSrcweir ' Und Funktion beenden 548cdf0e10cSrcweir Exit Function 549cdf0e10cSrcweir 550cdf0e10cSrcweir' Es ist ein unerwartete Fehler aufgetreten! (Exception ...) 551cdf0e10cSrcweir' Meldung ausgeben und mit Fehler zurueckkehren. 552cdf0e10cSrcweirTest_NormalUse_XPersist_Error: 553cdf0e10cSrcweir ' Ausschalten der Fehlerbehandlung 554cdf0e10cSrcweir on Error goto 0 555cdf0e10cSrcweir ' Meldung ausgeben 556cdf0e10cSrcweir ErrorMessage ( "Test_NormalUse_XPersist ... [Error]" ) 557cdf0e10cSrcweir ' und Fehlerstatus setzen 558cdf0e10cSrcweir Test_NormalUse_XPersist = cError 559cdf0e10cSrcweir ' Abbruch der Funktion erzwingen! 560cdf0e10cSrcweir Exit Function 561cdf0e10cSrcweir 562cdf0e10cSrcweirEnd Function 563cdf0e10cSrcweir 564cdf0e10cSrcweir'***************************************************************************************************************** 565cdf0e10cSrcweir' Hilfsfunktionen und -methoden 566cdf0e10cSrcweir'***************************************************************************************************************** 567cdf0e10cSrcweir 568cdf0e10cSrcweir'---------------------------------------------------------------------------- 569cdf0e10cSrcweir' Hilfsmethode: Oeffnet die LOG-Datei. 570cdf0e10cSrcweir'---------------------------------------------------------------------------- 571cdf0e10cSrcweirSub OpenLOG ( sFileName$ ) 572cdf0e10cSrcweir if ( bLOGOn = cOn ) then 573cdf0e10cSrcweir sLOGFileName$ = sFileName$ 574cdf0e10cSrcweir nLOGFileHandle% = FreeFile 575cdf0e10cSrcweir open sLOGFileName$ for output as nLOGFileHandle% 576cdf0e10cSrcweir end if 577cdf0e10cSrcweirEnd Sub 578cdf0e10cSrcweir 579cdf0e10cSrcweir'---------------------------------------------------------------------------- 580cdf0e10cSrcweir' Hilfsmethode: Schliesst die LOG-Datei. 581cdf0e10cSrcweir'---------------------------------------------------------------------------- 582cdf0e10cSrcweirSub CloseLOG 583cdf0e10cSrcweir if ( bLOGOn = cOn ) then 584cdf0e10cSrcweir close #nLOGFileHandle% 585cdf0e10cSrcweir end if 586cdf0e10cSrcweirEnd Sub 587cdf0e10cSrcweir 588cdf0e10cSrcweir'---------------------------------------------------------------------------- 589cdf0e10cSrcweir' Hilfsmethode: Gibt einen Text in einer LOG-Datei aus. 590cdf0e10cSrcweir'---------------------------------------------------------------------------- 591cdf0e10cSrcweirSub WriteLOG ( sMessage$ ) 592cdf0e10cSrcweir if ( bLOGOn = cOn ) then 593cdf0e10cSrcweir Write #nLOGFileHandle% sMessage$ 594cdf0e10cSrcweir end if 595cdf0e10cSrcweirEnd Sub 596cdf0e10cSrcweir 597cdf0e10cSrcweir'---------------------------------------------------------------------------- 598cdf0e10cSrcweir' Hilfsmethode: Gibt eine MessageBox mit Fehlertext, Zeilennummer und Warnschild aus. 599cdf0e10cSrcweir'---------------------------------------------------------------------------- 600cdf0e10cSrcweirSub ErrorMessage ( sMessage$ ) 601cdf0e10cSrcweir ' Entweder in die LOG-Datei schreiben oder eine MessageBox anzeigen. 602cdf0e10cSrcweir if ( bLOGOn = cOn ) then 603cdf0e10cSrcweir WriteLOG ( sMessage$ ) 604cdf0e10cSrcweir else 605cdf0e10cSrcweir MsgBox ( sMessage$, 16 ) 606cdf0e10cSrcweir end if 607cdf0e10cSrcweirEnd Sub 608cdf0e10cSrcweir 609cdf0e10cSrcweir'---------------------------------------------------------------------------- 610cdf0e10cSrcweir' Hilfsmethode: Gibt eine Hinweisbox aus. 611cdf0e10cSrcweir'---------------------------------------------------------------------------- 612cdf0e10cSrcweirSub InfoMessage ( sMessage$ ) 613cdf0e10cSrcweir ' Nur was anzeigen, wenn Nutzer es wuenscht! 614cdf0e10cSrcweir if ( bShowErrorsOnly = cOff ) then 615cdf0e10cSrcweir ' Ansonsten wird entweder in die LOG-Datei geschrieben oder eine MessageBox angezeigt. 616cdf0e10cSrcweir if ( bLOGOn = cOn ) then 617cdf0e10cSrcweir WriteLOG ( sMessage$ ) 618cdf0e10cSrcweir else 619cdf0e10cSrcweir MsgBox ( sMessage$, 64 ) 620cdf0e10cSrcweir end if 621cdf0e10cSrcweir end if 622cdf0e10cSrcweirEnd Sub 623cdf0e10cSrcweir 624cdf0e10cSrcweir'---------------------------------------------------------------------------- 625cdf0e10cSrcweir' Hilfsfunktion: Vergleicht zwei OWString-Werte 626cdf0e10cSrcweir' 627cdf0e10cSrcweir' Returnwert = cEqual ; wenn Werte identisch sind 628cdf0e10cSrcweir' Returnwert = cDifferent ; wenn Werte verschieden sind 629cdf0e10cSrcweir'---------------------------------------------------------------------------- 630cdf0e10cSrcweirFunction CompareOWString ( sOWString_1$, sOWString_2$ ) as Boolean 631cdf0e10cSrcweir 632cdf0e10cSrcweir if ( sOWString_1$ = sOWString_2$ ) then 633cdf0e10cSrcweir CompareOWString = cEqual 634cdf0e10cSrcweir else 635cdf0e10cSrcweir CompareOWString = cDifferent 636cdf0e10cSrcweir end if 637cdf0e10cSrcweir 638cdf0e10cSrcweirEnd Function 639cdf0e10cSrcweir 640cdf0e10cSrcweir'---------------------------------------------------------------------------- 641cdf0e10cSrcweir' Hilfsfunktion: Vergleicht zwei DateTime-Strukturen 642cdf0e10cSrcweir' 643cdf0e10cSrcweir' Returnwert = cEqual ; wenn Werte identisch sind 644cdf0e10cSrcweir' Returnwert = cDifferent ; wenn Werte verschieden sind 645cdf0e10cSrcweir'---------------------------------------------------------------------------- 646cdf0e10cSrcweirFunction CompareDateTime ( aDateTime_1, aDateTime_2 ) as Boolean 647cdf0e10cSrcweir 648cdf0e10cSrcweir if ( aDateTime_1.Day = aDateTime_2.Day and aDateTime_1.Month = aDateTime_2.Month and aDateTime_1.Year = aDateTime_2.Year and aDateTime_1.Hours = aDateTime_1.Hours and aDateTime_1.Minutes = aDateTime_1.Minutes and aDateTime_1.Seconds = aDateTime_1.Seconds and aDateTime_1.HundredthSeconds = aDateTime_1.HundredthSeconds ) then 649cdf0e10cSrcweir CompareDateTime = cEqual 650cdf0e10cSrcweir else 651cdf0e10cSrcweir CompareDateTime = cDifferent 652cdf0e10cSrcweir end if 653cdf0e10cSrcweir 654cdf0e10cSrcweirEnd Function 655cdf0e10cSrcweir 656cdf0e10cSrcweir'---------------------------------------------------------------------------- 657cdf0e10cSrcweir' Hilfsfunktion: Vergleicht zwei ByteSequence's 658cdf0e10cSrcweir' 659cdf0e10cSrcweir' Returnwert = cEqual ; wenn Werte identisch sind 660cdf0e10cSrcweir' Returnwert = cDifferent ; wenn Werte verschieden sind 661cdf0e10cSrcweir'---------------------------------------------------------------------------- 662cdf0e10cSrcweirFunction CompareByteSequence ( seqByteSequence_1, seqByteSequence_2 ) as Boolean 663cdf0e10cSrcweir 664cdf0e10cSrcweir ' Wenn beide leer sind, sind sie auch identisch ! 665cdf0e10cSrcweir ' Dieser Test mit "IsArray" ist noetig, da bei einem leeren Array die 666cdf0e10cSrcweir ' Funktion "UBound" einen Fehler produziert! 667cdf0e10cSrcweir if ( IsArray ( seqByteSequence_1 ) = FALSE and IsArray ( seqByteSequence_2 ) = FALSE ) then 668cdf0e10cSrcweir CompareByteSequence = cEqual 669cdf0e10cSrcweir Exit Function 670cdf0e10cSrcweir end if 671cdf0e10cSrcweir 672cdf0e10cSrcweir ' Wenn jedoch nur eine leer ist, dann sind sie nicht identisch. 673cdf0e10cSrcweir if ( IsArray ( seqByteSequence_1 ) = FALSE ) or ( IsArray ( seqByteSequence_2 ) = FALSE ) then 674cdf0e10cSrcweir CompareByteSequence = cDifferent 675cdf0e10cSrcweir Exit Function 676cdf0e10cSrcweir end if 677cdf0e10cSrcweir 678cdf0e10cSrcweir ' Besorgen der Anzahl der Elemente der Sequences 679cdf0e10cSrcweir nElementCount_1% = UBound ( seqByteSequence_1 ) 680cdf0e10cSrcweir nElementCount_2% = UBound ( seqByteSequence_2 ) 681cdf0e10cSrcweir 682cdf0e10cSrcweir ' Wenn diese Anzahl schon verschieden ist, dann ... 683cdf0e10cSrcweir if ( nElementCount_1% <> nElementCount_2% ) then 684cdf0e10cSrcweir ' ... sind die Sequences wohl verschieden. 685cdf0e10cSrcweir CompareByteSequence = cDifferent 686cdf0e10cSrcweir ' Die Element brauchen dann nicht mehr verglichen zu werden. 687cdf0e10cSrcweir Exit Function 688cdf0e10cSrcweir end if 689cdf0e10cSrcweir 690cdf0e10cSrcweir ' Ansonsten werden die Elemente einzeln miteinander verglichen. 691cdf0e10cSrcweir for nCounter%=0 to nElementCount_1% step 1 692cdf0e10cSrcweir ' Wenn auch nur ein paar davon verschieden ist, dann ... 693cdf0e10cSrcweir if ( nElementCount_1%(nCounter%) <> nElementCount_2%(nCounter%) ) then 694cdf0e10cSrcweir ' ... kann der Vergleich abgebrochen werden! 695cdf0e10cSrcweir CompareByteSequence = cDifferent 696cdf0e10cSrcweir Exit Function 697cdf0e10cSrcweir end if 698cdf0e10cSrcweir next nCounter% 699cdf0e10cSrcweir 700cdf0e10cSrcweir ' Wenn man bis hier gekommen ist, dann sind die Sequences identisch. 701cdf0e10cSrcweir CompareByteSequence = cEqual 702cdf0e10cSrcweir 703cdf0e10cSrcweirEnd Function 704cdf0e10cSrcweir 705cdf0e10cSrcweir'---------------------------------------------------------------------------- 706cdf0e10cSrcweir' Hilfsfunktion: Vergleicht zwei Int16-Werte 707cdf0e10cSrcweir' 708cdf0e10cSrcweir' Returnwert = cEqual ; wenn Werte identisch sind 709cdf0e10cSrcweir' Returnwert = cDifferent ; wenn Werte verschieden sind 710cdf0e10cSrcweir'---------------------------------------------------------------------------- 711cdf0e10cSrcweirFunction CompareInt16 ( nInt16_1%, nInt16_2% ) as Boolean 712cdf0e10cSrcweir 713cdf0e10cSrcweir if ( nInt16_1% = nInt16_2% ) then 714cdf0e10cSrcweir CompareInt16 = cEqual 715cdf0e10cSrcweir else 716cdf0e10cSrcweir CompareInt16 = cDifferent 717cdf0e10cSrcweir end if 718cdf0e10cSrcweir 719cdf0e10cSrcweirEnd Function 720cdf0e10cSrcweir 721cdf0e10cSrcweir'---------------------------------------------------------------------------- 722cdf0e10cSrcweir' Hilfsfunktion: Vergleicht zwei Int32-Werte 723cdf0e10cSrcweir' 724cdf0e10cSrcweir' Returnwert = cEqual ; wenn Werte identisch sind 725cdf0e10cSrcweir' Returnwert = cDifferent ; wenn Werte verschieden sind 726cdf0e10cSrcweir'---------------------------------------------------------------------------- 727cdf0e10cSrcweirFunction CompareInt32 ( nInt32_1&, nInt32_2& ) as Boolean 728cdf0e10cSrcweir 729cdf0e10cSrcweir if ( nInt32_1& = nInt32_2& ) then 730cdf0e10cSrcweir CompareInt32 = cEqual 731cdf0e10cSrcweir else 732cdf0e10cSrcweir CompareInt32 = cDifferent 733cdf0e10cSrcweir end if 734cdf0e10cSrcweir 735cdf0e10cSrcweirEnd Function 736cdf0e10cSrcweir 737cdf0e10cSrcweir'---------------------------------------------------------------------------- 738cdf0e10cSrcweir' Hilfsfunktion: Vergleicht zwei Bool-Werte 739cdf0e10cSrcweir' 740cdf0e10cSrcweir' Returnwert = cEqual ; wenn Werte identisch sind 741cdf0e10cSrcweir' Returnwert = cDifferent ; wenn Werte verschieden sind 742cdf0e10cSrcweir'---------------------------------------------------------------------------- 743cdf0e10cSrcweirFunction CompareBool ( bBool_1, bBool_2 ) as Boolean 744cdf0e10cSrcweir 745cdf0e10cSrcweir if ( bBool_1 = bBool_2 ) then 746cdf0e10cSrcweir CompareBool = cEqual 747cdf0e10cSrcweir else 748cdf0e10cSrcweir CompareBool = cDifferent 749cdf0e10cSrcweir end if 750cdf0e10cSrcweir 751cdf0e10cSrcweirEnd Function 752cdf0e10cSrcweir 753cdf0e10cSrcweir'---------------------------------------------------------------------------- 754cdf0e10cSrcweir' Hilfsfunktion: Vergleicht die Properties zweier Objekte um Unterschiede festzustellen. 755cdf0e10cSrcweir' 756cdf0e10cSrcweir' Returnwert = cEqual ; wenn Objekte von den Properties her identisch sind 757cdf0e10cSrcweir' Returnwert = cDifferent ; wenn Objekte von den Properties her verschieden sind 758cdf0e10cSrcweir'---------------------------------------------------------------------------- 759cdf0e10cSrcweirFunction CompareDocumentProperties ( aDocumentProperties_1, aDocumentProperties_2 ) as Boolean 760cdf0e10cSrcweir 761cdf0e10cSrcweir ' Besorgen der Werte und zwischenspeichern (bezogen auf Objekt 1) 762cdf0e10cSrcweir sAuthor_1$ = aDocumentProperties_1.getPropertyValue ( "Author" ) 763cdf0e10cSrcweir bAutoloadEnabled_1 = aDocumentProperties_1.getPropertyValue ( "AutoloadEnabled" ) 764cdf0e10cSrcweir nAutoloadSecs_1% = aDocumentProperties_1.getPropertyValue ( "AutoloadSecs" ) 765cdf0e10cSrcweir sAutoLoadURL_1$ = aDocumentProperties_1.getPropertyValue ( "AutoloadURL" ) 766cdf0e10cSrcweir sBliendCopiesTo_1$ = aDocumentProperties_1.getPropertyValue ( "BlindCopiesTo" ) 767cdf0e10cSrcweir sCopiesTo_1$ = aDocumentProperties_1.getPropertyValue ( "CopiesTo" ) 768cdf0e10cSrcweir aCreationDate_1 = aDocumentProperties_1.getPropertyValue ( "CreationDate" ) 769cdf0e10cSrcweir sDefaultTarget_1$ = aDocumentProperties_1.getPropertyValue ( "DefaultTarget" ) 770cdf0e10cSrcweir sDescription_1$ = aDocumentProperties_1.getPropertyValue ( "Description" ) 771cdf0e10cSrcweir nEditingCycles_1% = aDocumentProperties_1.getPropertyValue ( "EditingCycles" ) 772cdf0e10cSrcweir nEditingDuration_1& = aDocumentProperties_1.getPropertyValue ( "EditingDuration" ) 773cdf0e10cSrcweir seqExtraData_1 = aDocumentProperties_1.getPropertyValue ( "ExtraData" ) 774cdf0e10cSrcweir sInReplyTo_1$ = aDocumentProperties_1.getPropertyValue ( "InReplyTo" ) 775cdf0e10cSrcweir bIsEncrypted_1 = aDocumentProperties_1.getPropertyValue ( "IsEncrypted" ) 776cdf0e10cSrcweir sKeywords_1$ = aDocumentProperties_1.getPropertyValue ( "Keywords" ) 777cdf0e10cSrcweir sMIMEType_1$ = aDocumentProperties_1.getPropertyValue ( "MIMEType" ) 778cdf0e10cSrcweir sModifiedBy_1$ = aDocumentProperties_1.getPropertyValue ( "ModifiedBy" ) 779cdf0e10cSrcweir aModifyDate_1 = aDocumentProperties_1.getPropertyValue ( "ModifyDate" ) 780cdf0e10cSrcweir sNewsgroups_1$ = aDocumentProperties_1.getPropertyValue ( "Newsgroups" ) 781cdf0e10cSrcweir sOriginal_1$ = aDocumentProperties_1.getPropertyValue ( "Original" ) 782cdf0e10cSrcweir bPortableGraphics_1 = aDocumentProperties_1.getPropertyValue ( "PortableGraphics" ) 783cdf0e10cSrcweir aPrintDate_1 = aDocumentProperties_1.getPropertyValue ( "PrintDate" ) 784cdf0e10cSrcweir sPrintedBy_1$ = aDocumentProperties_1.getPropertyValue ( "PrintedBy" ) 785cdf0e10cSrcweir nPriority_1% = aDocumentProperties_1.getPropertyValue ( "Priority" ) 786cdf0e10cSrcweir bQueryTemplate_1 = aDocumentProperties_1.getPropertyValue ( "QueryTemplate" ) 787cdf0e10cSrcweir sRecipient_1$ = aDocumentProperties_1.getPropertyValue ( "Recipient" ) 788cdf0e10cSrcweir sReferences_1$ = aDocumentProperties_1.getPropertyValue ( "References" ) 789cdf0e10cSrcweir sReplyTo_1$ = aDocumentProperties_1.getPropertyValue ( "ReplyTo" ) 790cdf0e10cSrcweir bSaveGraphicsCompressed_1 = aDocumentProperties_1.getPropertyValue ( "SaveGraphicsCompressed" ) 791cdf0e10cSrcweir bSaveOriginalGraphics_1 = aDocumentProperties_1.getPropertyValue ( "SaveOriginalGraphics" ) 792cdf0e10cSrcweir bSaveVersionOnClose_1 = aDocumentProperties_1.getPropertyValue ( "SaveVersionOnClose" ) 793cdf0e10cSrcweir sTemplate_1$ = aDocumentProperties_1.getPropertyValue ( "Template" ) 794cdf0e10cSrcweir bTemplateConfig_1 = aDocumentProperties_1.getPropertyValue ( "TemplateConfig" ) 795cdf0e10cSrcweir aTemplateDate_1 = aDocumentProperties_1.getPropertyValue ( "TemplateDate" ) 796cdf0e10cSrcweir sTemplateFileName_1$ = aDocumentProperties_1.getPropertyValue ( "TemplateFileName" ) 797cdf0e10cSrcweir sTheme_1$ = aDocumentProperties_1.getPropertyValue ( "Theme" ) 798cdf0e10cSrcweir sTitle_1$ = aDocumentProperties_1.getPropertyValue ( "Title" ) 799cdf0e10cSrcweir bUserData_1 = aDocumentProperties_1.getPropertyValue ( "UserData" ) 800cdf0e10cSrcweir 801cdf0e10cSrcweir ' Besorgen der Werte und zwischenspeichern (bezogen auf Objekt 2) 802cdf0e10cSrcweir sAuthor_2$ = aDocumentProperties_2.getPropertyValue ( "Author" ) 803cdf0e10cSrcweir bAutoloadEnabled_2 = aDocumentProperties_2.getPropertyValue ( "AutoloadEnabled" ) 804cdf0e10cSrcweir nAutoloadSecs_2% = aDocumentProperties_2.getPropertyValue ( "AutoloadSecs" ) 805cdf0e10cSrcweir sAutoLoadURL_2$ = aDocumentProperties_2.getPropertyValue ( "AutoloadURL" ) 806cdf0e10cSrcweir sBliendCopiesTo_2$ = aDocumentProperties_2.getPropertyValue ( "BlindCopiesTo" ) 807cdf0e10cSrcweir sCopiesTo_2$ = aDocumentProperties_2.getPropertyValue ( "CopiesTo" ) 808cdf0e10cSrcweir aCreationDate_2 = aDocumentProperties_2.getPropertyValue ( "CreationDate" ) 809cdf0e10cSrcweir sDefaultTarget_2$ = aDocumentProperties_2.getPropertyValue ( "DefaultTarget" ) 810cdf0e10cSrcweir sDescription_2$ = aDocumentProperties_2.getPropertyValue ( "Description" ) 811cdf0e10cSrcweir nEditingCycles_2% = aDocumentProperties_2.getPropertyValue ( "EditingCycles" ) 812cdf0e10cSrcweir nEditingDuration_2& = aDocumentProperties_2.getPropertyValue ( "EditingDuration" ) 813cdf0e10cSrcweir seqExtraData_2 = aDocumentProperties_2.getPropertyValue ( "ExtraData" ) 814cdf0e10cSrcweir sInReplyTo_2$ = aDocumentProperties_2.getPropertyValue ( "InReplyTo" ) 815cdf0e10cSrcweir bIsEncrypted_2 = aDocumentProperties_2.getPropertyValue ( "IsEncrypted" ) 816cdf0e10cSrcweir sKeywords_2$ = aDocumentProperties_2.getPropertyValue ( "Keywords" ) 817cdf0e10cSrcweir sMIMEType_2$ = aDocumentProperties_2.getPropertyValue ( "MIMEType" ) 818cdf0e10cSrcweir sModifiedBy_2$ = aDocumentProperties_2.getPropertyValue ( "ModifiedBy" ) 819cdf0e10cSrcweir aModifyDate_2 = aDocumentProperties_2.getPropertyValue ( "ModifyDate" ) 820cdf0e10cSrcweir sNewsgroups_2$ = aDocumentProperties_2.getPropertyValue ( "Newsgroups" ) 821cdf0e10cSrcweir sOriginal_2$ = aDocumentProperties_2.getPropertyValue ( "Original" ) 822cdf0e10cSrcweir bPortableGraphics_2 = aDocumentProperties_2.getPropertyValue ( "PortableGraphics" ) 823cdf0e10cSrcweir aPrintDate_2 = aDocumentProperties_2.getPropertyValue ( "PrintDate" ) 824cdf0e10cSrcweir sPrintedBy_2$ = aDocumentProperties_2.getPropertyValue ( "PrintedBy" ) 825cdf0e10cSrcweir nPriority_2% = aDocumentProperties_2.getPropertyValue ( "Priority" ) 826cdf0e10cSrcweir bQueryTemplate_2 = aDocumentProperties_2.getPropertyValue ( "QueryTemplate" ) 827cdf0e10cSrcweir sRecipient_2$ = aDocumentProperties_2.getPropertyValue ( "Recipient" ) 828cdf0e10cSrcweir sReferences_2$ = aDocumentProperties_2.getPropertyValue ( "References" ) 829cdf0e10cSrcweir sReplyTo_2$ = aDocumentProperties_2.getPropertyValue ( "ReplyTo" ) 830cdf0e10cSrcweir bSaveGraphicsCompressed_2 = aDocumentProperties_2.getPropertyValue ( "SaveGraphicsCompressed" ) 831cdf0e10cSrcweir bSaveOriginalGraphics_2 = aDocumentProperties_2.getPropertyValue ( "SaveOriginalGraphics" ) 832cdf0e10cSrcweir bSaveVersionOnClose_2 = aDocumentProperties_2.getPropertyValue ( "SaveVersionOnClose" ) 833cdf0e10cSrcweir sTemplate_2$ = aDocumentProperties_2.getPropertyValue ( "Template" ) 834cdf0e10cSrcweir bTemplateConfig_2 = aDocumentProperties_2.getPropertyValue ( "TemplateConfig" ) 835cdf0e10cSrcweir aTemplateDate_2 = aDocumentProperties_2.getPropertyValue ( "TemplateDate" ) 836cdf0e10cSrcweir sTemplateFileName_2$ = aDocumentProperties_2.getPropertyValue ( "TemplateFileName" ) 837cdf0e10cSrcweir sTheme_2$ = aDocumentProperties_2.getPropertyValue ( "Theme" ) 838cdf0e10cSrcweir sTitle_2$ = aDocumentProperties_2.getPropertyValue ( "Title" ) 839cdf0e10cSrcweir bUserData_2 = aDocumentProperties_2.getPropertyValue ( "UserData" ) 840cdf0e10cSrcweir 841cdf0e10cSrcweir ' Als erwarteten Zielwert schon mal "Properties identisch" annehmen!!! 842cdf0e10cSrcweir ' F�r den Fall, das nur eine diesen Anspruch nicht erf�llt, wird der Wert einfach zur�ckgesetzt. 843cdf0e10cSrcweir ' Von da bleibt der neue Wert bestehen und zeigt an, da� sich mindestens eine Property ge�ndert hat! 844cdf0e10cSrcweir CompareDocumentProperties = cEqual 845cdf0e10cSrcweir 846cdf0e10cSrcweir ' Dann die Werte vergleichen 847cdf0e10cSrcweir if ( CompareOWString ( sAuthor_1$, sAuthor_2$ ) = cDifferent ) then 848cdf0e10cSrcweir CompareDocumentProperties = cDifferent 849cdf0e10cSrcweir elseif ( CompareBool ( bAutoloadEnabled_1, bAutoloadEnabled_2 ) = cDifferent ) then 850cdf0e10cSrcweir CompareDocumentProperties = cDifferent 851cdf0e10cSrcweir elseif ( CompareInt16 ( nAutoloadSecs_1%, nAutoloadSecs_2% ) = cDifferent ) then 852cdf0e10cSrcweir CompareDocumentProperties = cDifferent 853cdf0e10cSrcweir elseif ( CompareOWString ( sAutoLoadURL_1$, sAutoLoadURL_2$ ) = cDifferent ) then 854cdf0e10cSrcweir CompareDocumentProperties = cDifferent 855cdf0e10cSrcweir elseif ( CompareOWString ( sBliendCopiesTo_1$, sBliendCopiesTo_2$ ) = cDifferent ) then 856cdf0e10cSrcweir CompareDocumentProperties = cDifferent 857cdf0e10cSrcweir elseif ( CompareOWString ( sCopiesTo_1$, sCopiesTo_2$ ) = cDifferent ) then 858cdf0e10cSrcweir CompareDocumentProperties = cDifferent 859cdf0e10cSrcweir elseif ( CompareDateTime ( aCreationDate_1, aCreationDate_2 ) = cDifferent ) then 860cdf0e10cSrcweir CompareDocumentProperties = cDifferent 861cdf0e10cSrcweir elseif ( CompareOWString ( sDefaultTarget_1$, sDefaultTarget_2$ ) = cDifferent ) then 862cdf0e10cSrcweir CompareDocumentProperties = cDifferent 863cdf0e10cSrcweir elseif ( CompareOWString ( sDescription_1$, sDescription_2$ ) = cDifferent ) then 864cdf0e10cSrcweir CompareDocumentProperties = cDifferent 865cdf0e10cSrcweir elseif ( CompareInt16 ( nEditingCycles_1%, nEditingCycles_2% ) = cDifferent ) then 866cdf0e10cSrcweir CompareDocumentProperties = cDifferent 867cdf0e10cSrcweir elseif ( CompareInt32 ( nEditingDuration_1&, nEditingDuration_2& ) = cDifferent ) then 868cdf0e10cSrcweir CompareDocumentProperties = cDifferent 869cdf0e10cSrcweir elseif ( CompareByteSequence( seqExtraData_1, seqExtraData_2 ) = cDifferent ) then 870cdf0e10cSrcweir CompareDocumentProperties = cDifferent 871cdf0e10cSrcweir elseif ( CompareOWString ( sInReplyTo_1$, sInReplyTo_2$ ) = cDifferent ) then 872cdf0e10cSrcweir CompareDocumentProperties = cDifferent 873cdf0e10cSrcweir elseif ( CompareBool ( bIsEncrypted_1, bIsEncrypted_2 ) = cDifferent ) then 874cdf0e10cSrcweir CompareDocumentProperties = cDifferent 875cdf0e10cSrcweir elseif ( CompareOWString ( sKeywords_1$, sKeywords_2$ ) = cDifferent ) then 876cdf0e10cSrcweir CompareDocumentProperties = cDifferent 877cdf0e10cSrcweir elseif ( CompareOWString ( sMIMEType_1$, sMIMEType_2$ ) = cDifferent ) then 878cdf0e10cSrcweir CompareDocumentProperties = cDifferent 879cdf0e10cSrcweir elseif ( CompareOWString ( sModifiedBy_1$, sModifiedBy_2$ ) = cDifferent ) then 880cdf0e10cSrcweir CompareDocumentProperties = cDifferent 881cdf0e10cSrcweir elseif ( CompareDateTime ( aModifyDate_1, aModifyDate_2 ) = cDifferent ) then 882cdf0e10cSrcweir CompareDocumentProperties = cDifferent 883cdf0e10cSrcweir elseif ( CompareOWString ( sNewsgroups_1$, sNewsgroups_2$ ) = cDifferent ) then 884cdf0e10cSrcweir CompareDocumentProperties = cDifferent 885cdf0e10cSrcweir elseif ( CompareOWString ( sOriginal_1$, sOriginal_2$ ) = cDifferent ) then 886cdf0e10cSrcweir CompareDocumentProperties = cDifferent 887cdf0e10cSrcweir elseif ( CompareBool ( bPortableGraphics_1, bPortableGraphics_2 ) = cDifferent ) then 888cdf0e10cSrcweir CompareDocumentProperties = cDifferent 889cdf0e10cSrcweir elseif ( CompareDateTime ( aPrintDate_1, aPrintDate_2 ) = cDifferent ) then 890cdf0e10cSrcweir CompareDocumentProperties = cDifferent 891cdf0e10cSrcweir elseif ( CompareOWString ( sPrintedBy_1$, sPrintedBy_2$ ) = cDifferent ) then 892cdf0e10cSrcweir CompareDocumentProperties = cDifferent 893cdf0e10cSrcweir elseif ( CompareInt16 ( nPriority_1%, nPriority_2% ) = cDifferent ) then 894cdf0e10cSrcweir CompareDocumentProperties = cDifferent 895cdf0e10cSrcweir elseif ( CompareBool ( bQueryTemplate_1, bQueryTemplate_2 ) = cDifferent ) then 896cdf0e10cSrcweir CompareDocumentProperties = cDifferent 897cdf0e10cSrcweir elseif ( CompareOWString ( sRecipient_1$, sRecipient_2$ ) = cDifferent ) then 898cdf0e10cSrcweir CompareDocumentProperties = cDifferent 899cdf0e10cSrcweir elseif ( CompareOWString ( sReferences_1$, sReferences_2$ ) = cDifferent ) then 900cdf0e10cSrcweir CompareDocumentProperties = cDifferent 901cdf0e10cSrcweir elseif ( CompareOWString ( sReplyTo_1$, sReplyTo_2$ ) = cDifferent ) then 902cdf0e10cSrcweir CompareDocumentProperties = cDifferent 903cdf0e10cSrcweir elseif ( CompareBool ( bSaveGraphicsCompressed_1, bSaveGraphicsCompressed_2 ) = cDifferent ) then 904cdf0e10cSrcweir CompareDocumentProperties = cDifferent 905cdf0e10cSrcweir elseif ( CompareBool ( bSaveOriginalGraphics_1, bSaveOriginalGraphics_2 ) = cDifferent ) then 906cdf0e10cSrcweir CompareDocumentProperties = cDifferent 907cdf0e10cSrcweir elseif ( CompareBool ( bSaveVersionOnClose_1, bSaveVersionOnClose_2 ) = cDifferent ) then 908cdf0e10cSrcweir CompareDocumentProperties = cDifferent 909cdf0e10cSrcweir elseif ( CompareOWString ( sTemplate_1$, sTemplate_2$ ) = cDifferent ) then 910cdf0e10cSrcweir CompareDocumentProperties = cDifferent 911cdf0e10cSrcweir elseif ( CompareBool ( bTemplateConfig_1, bTemplateConfig_2 ) = cDifferent ) then 912cdf0e10cSrcweir CompareDocumentProperties = cDifferent 913cdf0e10cSrcweir elseif ( CompareDateTime ( aTemplateDate_1, aTemplateDate_2 ) = cDifferent ) then 914cdf0e10cSrcweir CompareDocumentProperties = cDifferent 915cdf0e10cSrcweir elseif ( CompareOWString ( sTemplateFileName_1$, sTemplateFileName_2$ ) = cDifferent ) then 916cdf0e10cSrcweir CompareDocumentProperties = cDifferent 917cdf0e10cSrcweir elseif ( CompareOWString ( sTheme_1$, sTheme_2$ ) = cDifferent ) then 918cdf0e10cSrcweir CompareDocumentProperties = cDifferent 919cdf0e10cSrcweir elseif ( CompareOWString ( sTitle_1$, sTitle_2$ ) = cDifferent ) then 920cdf0e10cSrcweir CompareDocumentProperties = cDifferent 921cdf0e10cSrcweir elseif ( CompareBool ( bUserData_1, bUserData_2 ) = cDifferent ) then 922cdf0e10cSrcweir CompareDocumentProperties = cDifferent 923cdf0e10cSrcweir end if 924cdf0e10cSrcweir 925cdf0e10cSrcweirEnd Function 926cdf0e10cSrcweir 927cdf0e10cSrcweir'---------------------------------------------------------------------------- 928cdf0e10cSrcweir' Hilfsfunktion: Wandelt eine Struktur des Types DateTime in einen formatierten String um 929cdf0e10cSrcweir'---------------------------------------------------------------------------- 930cdf0e10cSrcweirFunction DateTime2String ( aDateTime ) as String 931cdf0e10cSrcweir 932cdf0e10cSrcweir stempString$ = "" 933cdf0e10cSrcweir stempString$ = stempString$ + aDateTime.Day + "." 934cdf0e10cSrcweir stempString$ = stempString$ + aDateTime.Month + "." 935cdf0e10cSrcweir stempString$ = stempString$ + aDateTime.Year + " - " 936cdf0e10cSrcweir stempString$ = stempString$ + aDateTime.Hours + ":" 937cdf0e10cSrcweir stempString$ = stempString$ + aDateTime.Minutes + ":" 938cdf0e10cSrcweir stempString$ = stempString$ + aDateTime.Seconds + ":" 939cdf0e10cSrcweir stempString$ = stempString$ + aDateTime.HundredthSeconds + " Uhr" 940cdf0e10cSrcweir 941cdf0e10cSrcweir DateTime2String = stempString$ 942cdf0e10cSrcweir 943cdf0e10cSrcweirEnd Function 944cdf0e10cSrcweir 945cdf0e10cSrcweir'---------------------------------------------------------------------------- 946cdf0e10cSrcweir' Hilfsfunktion: Wandelt eine Sequence von Bytes in einen formatierten String um 947cdf0e10cSrcweir'---------------------------------------------------------------------------- 948cdf0e10cSrcweirFunction ByteSequence2String ( seqByteSequence ) as String 949cdf0e10cSrcweir 950cdf0e10cSrcweir nElementCount% = UBound ( seqByteSequence() ) 951cdf0e10cSrcweir 952cdf0e10cSrcweir if ( nElementCount% < 1 ) then 953cdf0e10cSrcweir stempString$ = "leer" 954cdf0e10cSrcweir else 955cdf0e10cSrcweir stempString$ = "{" 956cdf0e10cSrcweir for nCounter%=0 to nElementCount% step 1 957cdf0e10cSrcweir stempString$ = stempString$ + seqByteSequence(nCounter%) 958cdf0e10cSrcweir next nCounter% 959cdf0e10cSrcweir stempString$ = stempString$ + "}" 960cdf0e10cSrcweir end if 961cdf0e10cSrcweir 962cdf0e10cSrcweir ByteSequence2String = stempString$ 963cdf0e10cSrcweir 964cdf0e10cSrcweirEnd Function 965cdf0e10cSrcweir 966cdf0e10cSrcweir'---------------------------------------------------------------------------- 967cdf0e10cSrcweir' Hilfsmethode: Zeigt die aktuellen Werte ALLER Properties an 968cdf0e10cSrcweir'---------------------------------------------------------------------------- 969cdf0e10cSrcweirSub ShowProperties ( aDocumentProperties ) 970cdf0e10cSrcweir 971cdf0e10cSrcweir ' Besorgen der Werte und zwischenspeichern 972cdf0e10cSrcweir sAuthor$ = aDocumentProperties.getPropertyValue ( "Author" ) 973cdf0e10cSrcweir bAutoloadEnabled = aDocumentProperties.getPropertyValue ( "AutoloadEnabled" ) 974cdf0e10cSrcweir nAutoloadSecs% = aDocumentProperties.getPropertyValue ( "AutoloadSecs" ) 975cdf0e10cSrcweir sAutoLoadURL$ = aDocumentProperties.getPropertyValue ( "AutoloadURL" ) 976cdf0e10cSrcweir sBliendCopiesTo$ = aDocumentProperties.getPropertyValue ( "BlindCopiesTo" ) 977cdf0e10cSrcweir sCopiesTo$ = aDocumentProperties.getPropertyValue ( "CopiesTo" ) 978cdf0e10cSrcweir dCreationDate = aDocumentProperties.getPropertyValue ( "CreationDate" ) 979cdf0e10cSrcweir sDefaultTarget$ = aDocumentProperties.getPropertyValue ( "DefaultTarget" ) 980cdf0e10cSrcweir sDescription$ = aDocumentProperties.getPropertyValue ( "Description" ) 981cdf0e10cSrcweir nEditingCycles% = aDocumentProperties.getPropertyValue ( "EditingCycles" ) 982cdf0e10cSrcweir nEditingDuration& = aDocumentProperties.getPropertyValue ( "EditingDuration" ) 983cdf0e10cSrcweir seqExtraData = aDocumentProperties.getPropertyValue ( "ExtraData" ) 984cdf0e10cSrcweir sInReplyTo$ = aDocumentProperties.getPropertyValue ( "InReplyTo" ) 985cdf0e10cSrcweir bIsEncrypted = aDocumentProperties.getPropertyValue ( "IsEncrypted" ) 986cdf0e10cSrcweir sKeywords$ = aDocumentProperties.getPropertyValue ( "Keywords" ) 987cdf0e10cSrcweir sMIMEType$ = aDocumentProperties.getPropertyValue ( "MIMEType" ) 988cdf0e10cSrcweir sModifiedBy$ = aDocumentProperties.getPropertyValue ( "ModifiedBy" ) 989cdf0e10cSrcweir dModifyDate = aDocumentProperties.getPropertyValue ( "ModifyDate" ) 990cdf0e10cSrcweir sNewsgroups$ = aDocumentProperties.getPropertyValue ( "Newsgroups" ) 991cdf0e10cSrcweir sOriginal$ = aDocumentProperties.getPropertyValue ( "Original" ) 992cdf0e10cSrcweir bPortableGraphics = aDocumentProperties.getPropertyValue ( "PortableGraphics" ) 993cdf0e10cSrcweir dPrintDate = aDocumentProperties.getPropertyValue ( "PrintDate" ) 994cdf0e10cSrcweir sPrintedBy$ = aDocumentProperties.getPropertyValue ( "PrintedBy" ) 995cdf0e10cSrcweir nPriority% = aDocumentProperties.getPropertyValue ( "Priority" ) 996cdf0e10cSrcweir bQueryTemplate = aDocumentProperties.getPropertyValue ( "QueryTemplate" ) 997cdf0e10cSrcweir sRecipient$ = aDocumentProperties.getPropertyValue ( "Recipient" ) 998cdf0e10cSrcweir sReferences$ = aDocumentProperties.getPropertyValue ( "References" ) 999cdf0e10cSrcweir sReplyTo$ = aDocumentProperties.getPropertyValue ( "ReplyTo" ) 1000cdf0e10cSrcweir bSaveGraphicsCompressed = aDocumentProperties.getPropertyValue ( "SaveGraphicsCompressed" ) 1001cdf0e10cSrcweir bSaveOriginalGraphics = aDocumentProperties.getPropertyValue ( "SaveOriginalGraphics" ) 1002cdf0e10cSrcweir bSaveVersionOnClose = aDocumentProperties.getPropertyValue ( "SaveVersionOnClose" ) 1003cdf0e10cSrcweir sTemplate$ = aDocumentProperties.getPropertyValue ( "Template" ) 1004cdf0e10cSrcweir bTemplateConfig = aDocumentProperties.getPropertyValue ( "TemplateConfig" ) 1005cdf0e10cSrcweir dTemplateDate = aDocumentProperties.getPropertyValue ( "TemplateDate" ) 1006cdf0e10cSrcweir sTemplateFileName$ = aDocumentProperties.getPropertyValue ( "TemplateFileName" ) 1007cdf0e10cSrcweir sTheme$ = aDocumentProperties.getPropertyValue ( "Theme" ) 1008cdf0e10cSrcweir sTitle$ = aDocumentProperties.getPropertyValue ( "Title" ) 1009cdf0e10cSrcweir bUserData = aDocumentProperties.getPropertyValue ( "UserData" ) 1010cdf0e10cSrcweir 1011cdf0e10cSrcweir ' Eine Zeichenkette zusammenbasteln, welche die Werte formatiert darstellt. 1012cdf0e10cSrcweir sOutLine$ = "[OWString]" + chr$(9) + "Author" + chr$(9) + "= {" + chr$(9) + sAuthor$ + "}" + chr$(13) 1013cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[sal_Bool]" + chr$(9) + "AutoloadEnabled" + chr$(9) + "= {" + chr$(9) + bAutoloadEnabled + "}" + chr$(13) 1014cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[sal_Int16]" + chr$(9) + "AutoloadSecs" + chr$(9) + "= {" + chr$(9) + nAutoloadSecs% + "}" + chr$(13) 1015cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[OWString]" + chr$(9) + "AutoLoadURL" + chr$(9) + "= {" + chr$(9) + sAutoLoadURL$ + "}" + chr$(13) 1016cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[OWString]" + chr$(9) + "BliendCopiesTo" + chr$(9) + "= {" + chr$(9) + sBliendCopiesTo$ + "}" + chr$(13) 1017cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[OWString]" + chr$(9) + "CopiesTo" + chr$(9) + "= {" + chr$(9) + sCopiesTo$ + "}" + chr$(13) 1018cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[DateTime]" + chr$(9) + "CreationDate" + chr$(9) + "= {" + chr$(9) + DateTime2String(dCreationDate) + "}" + chr$(13) 1019cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[OWString]" + chr$(9) + "DefaultTarget" + chr$(9) + "= {" + chr$(9) + sDefaultTarget$ + "}" + chr$(13) 1020cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[OWString]" + chr$(9) + "Description" + chr$(9) + "= {" + chr$(9) + sDescription$ + "}" + chr$(13) 1021cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[sal_Int16]" + chr$(9) + "EditingCycles" + chr$(9) + "= {" + chr$(9) + nEditingCycles% + "}" + chr$(13) 1022cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[sal_Int32]" + chr$(9) + "EditingDuration" + chr$(9) + "= {" + chr$(9) + nEditingDuration& + "}" + chr$(13) 1023cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[Sequence<Byte>]" + chr$(9) + "ExtraData" + chr$(9) + "= {" + chr$(9) + ByteSequence2String(seqExtraData) + "}" + chr$(13) 1024cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[OWString]" + chr$(9) + "InReplyTo" + chr$(9) + "= {" + chr$(9) + sInReplyTo$ + "}" + chr$(13) 1025cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[sal_Bool]" + chr$(9) + "IsEncrypted" + chr$(9) + "= {" + chr$(9) + bIsEncrypted + "}" + chr$(13) 1026cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[OWString]" + chr$(9) + "Keywords" + chr$(9) + "= {" + chr$(9) + sKeywords$ + "}" + chr$(13) 1027cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[OWString]" + chr$(9) + "MIMEType" + chr$(9) + "= {" + chr$(9) + sMIMEType$ + "}" + chr$(13) 1028cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[OWString]" + chr$(9) + "ModifiedBy" + chr$(9) + "= {" + chr$(9) + sModifiedBy$ + "}" + chr$(13) 1029cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[DateTime]" + chr$(9) + "ModifyDate" + chr$(9) + "= {" + chr$(9) + DateTime2String(dModifyDate) + "}" + chr$(13) 1030cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[OWString]" + chr$(9) + "Newsgroups" + chr$(9) + "= {" + chr$(9) + sNewsgroups$ + "}" + chr$(13) 1031cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[OWString]" + chr$(9) + "Original" + chr$(9) + "= {" + chr$(9) + sOriginal$ + "}" + chr$(13) 1032cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[sal_Bool]" + chr$(9) + "PortableGraphics" + chr$(9) + "= {" + chr$(9) + bPortableGraphics + "}" + chr$(13) 1033cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[DateTime]" + chr$(9) + "PrintDate" + chr$(9) + "= {" + chr$(9) + DateTime2String(dPrintDate) + "}" + chr$(13) 1034cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[OWString]" + chr$(9) + "PrintedBy" + chr$(9) + "= {" + chr$(9) + sPrintedBy$ + "}" + chr$(13) 1035cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[sal_Int16]" + chr$(9) + "Priority" + chr$(9) + "= {" + chr$(9) + nPriority% + "}" + chr$(13) 1036cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[sal_Bool]" + chr$(9) + "QueryTemplate" + chr$(9) + "= {" + chr$(9) + bQueryTemplate + "}" + chr$(13) 1037cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[OWString]" + chr$(9) + "Recipient" + chr$(9) + "= {" + chr$(9) + sRecipient$ + "}" + chr$(13) 1038cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[OWString]" + chr$(9) + "References" + chr$(9) + "= {" + chr$(9) + sReferences$ + "}" + chr$(13) 1039cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[OWString]" + chr$(9) + "ReplyTo" + chr$(9) + "= {" + chr$(9) + sReplyTo$ + "}" + chr$(13) 1040cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[sal_Bool]" + chr$(9) + "SaveGraphicsCompressed" + chr$(9) + "= {" + chr$(9) + bSaveGraphicsCompressed + "}" + chr$(13) 1041cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[sal_Bool]" + chr$(9) + "SaveOriginalGraphics" + chr$(9) + "= {" + chr$(9) + bSaveOriginalGraphics + "}" + chr$(13) 1042cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[sal_Bool]" + chr$(9) + "SaveVersionOnClose" + chr$(9) + "= {" + chr$(9) + bSaveVersionOnClose + "}" + chr$(13) 1043cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[OWString]" + chr$(9) + "Template" + chr$(9) + "= {" + chr$(9) + sTemplate$ + "}" + chr$(13) 1044cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[sal_Bool]" + chr$(9) + "TemplateConfig" + chr$(9) + "= {" + chr$(9) + bTemplateConfig + "}" + chr$(13) 1045cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[DateTime]" + chr$(9) + "TemplateDate" + chr$(9) + "= {" + chr$(9) + DateTime2String(dTemplateDate) + "}" + chr$(13) 1046cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[OWString]" + chr$(9) + "TemplateFileName" + chr$(9) + "= {" + chr$(9) + sTemplateFileName$ + "}" + chr$(13) 1047cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[OWString]" + chr$(9) + "Theme" + chr$(9) + "= {" + chr$(9) + sTheme$ + "}" + chr$(13) 1048cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[OWString]" + chr$(9) + "Title" + chr$(9) + "= {" + chr$(9) + sTitle$ + "}" + chr$(13) 1049cdf0e10cSrcweir sOutLine$ = sOutLine$ + "[sal_Bool]" + chr$(9) + "UserData" + chr$(9) + "= {" + chr$(9) + bUserData + "}" 1050cdf0e10cSrcweir 1051cdf0e10cSrcweir ' Ausgabe der formatierten Zeichenkette 1052cdf0e10cSrcweir InfoMessage ( sOutLine$ ) 1053cdf0e10cSrcweirEnd Sub 1054cdf0e10cSrcweir 1055cdf0e10cSrcweir'---------------------------------------------------------------------------- 1056cdf0e10cSrcweir' Hilfsmethode: Zeigt die aktuellen Elemente des NameContainers an. 1057cdf0e10cSrcweir'---------------------------------------------------------------------------- 1058cdf0e10cSrcweirSub ShowNameContainer ( aDocumentProperties ) 1059cdf0e10cSrcweir 1060cdf0e10cSrcweir if ( aDocumentProperties.hasElements () = FALSE ) then 1061cdf0e10cSrcweir InfoMessage ( "Keine Elemente im NameContainer enthalten." ) 1062cdf0e10cSrcweir Exit Sub 1063cdf0e10cSrcweir end if 1064cdf0e10cSrcweir 1065cdf0e10cSrcweir aNameField = aDocumentProperties.getElementNames () 1066cdf0e10cSrcweir if ( IsArray ( aNameField ) = FALSE ) then 1067cdf0e10cSrcweir ErrorMessage ( "getElementNames() .... Fehler (Es konnte keine Sequence bestimmt werden!)" ) 1068cdf0e10cSrcweir Exit Sub 1069cdf0e10cSrcweir end if 1070cdf0e10cSrcweir nElementCount% = UBound ( aNameField () ) 1071cdf0e10cSrcweir 1072cdf0e10cSrcweir stempString$ = "" 1073cdf0e10cSrcweir for nCounter%=0 to nElementCount% step 1 1074cdf0e10cSrcweir stempString$ = "[" + nCounter% + "]" 1075cdf0e10cSrcweir stempString$ = stempString$ + chr$(9) + aNameField(nCounter%) 1076cdf0e10cSrcweir stempString$ = stempString$ + chr$(9) + "=" 1077cdf0e10cSrcweir stempString$ = stempString$ + chr$(9) + aDocumentProperties.getByName ( aNameField(nCounter%) ) 1078cdf0e10cSrcweir stempString$ = stempString$ + chr$(13) 1079cdf0e10cSrcweir next nCounter% 1080cdf0e10cSrcweir 1081cdf0e10cSrcweir InfoMessage ( stempString$ ) 1082cdf0e10cSrcweir 1083cdf0e10cSrcweirEnd Sub 1084cdf0e10cSrcweir 1085cdf0e10cSrcweir'---------------------------------------------------------------------------- 1086cdf0e10cSrcweir' Hilfsfunktion: Ermittelt die Anzahl der im NameContainer enthaltenen Elemente. 1087cdf0e10cSrcweir' 1088cdf0e10cSrcweir' Returnwert = Anzahl der Elemente 1089cdf0e10cSrcweir'---------------------------------------------------------------------------- 1090cdf0e10cSrcweirFunction getNameContainerCount ( aDocumentProperties ) as Long 1091cdf0e10cSrcweir 1092cdf0e10cSrcweir if ( aDocumentProperties.hasElements () = FALSE ) then 1093cdf0e10cSrcweir getNameContainerCount = 0 1094cdf0e10cSrcweir Exit Function 1095cdf0e10cSrcweir end if 1096cdf0e10cSrcweir 1097cdf0e10cSrcweir aNameField = aDocumentProperties.getElementNames () 1098cdf0e10cSrcweir nElementCount% = UBound ( aNameField () ) 1099cdf0e10cSrcweir 1100cdf0e10cSrcweir ' Da die Zaehlung bei 0 beginnt, und der ermittelte Wert die obere Grenze darstellt, 1101cdf0e10cSrcweir ' muss hier eine 1 draufgeschlagen werden. 1102cdf0e10cSrcweir getNameContainerCount = nElementCount% + 1 1103cdf0e10cSrcweir 1104*184e05d2SAndrew RistEnd Function 1105