vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB & Windows API
Fehler bei SafeArraygetDim 
Autor: radler
Datum: 21.09.04 18:54

Hallo,
ich benötige Hilfe bzgl. der WIN-API SafeArraygetDim (siehe auch hier im vb@rchiv
oder im vb@rchiv-Forum).
Mit der API SafeArraygetdim soll geprüft werden, ob ein Array dimensioniert ist.
Teilweise als UDT (siehe unten 'gl_Bordero()' oder 'Public gl_Sendung As typeSendung)
oder auch als 'Public gl_SendIDs() As Long'.
Die API gibt uns allerdings unverständlicherweise einen fehlerhaften Wert zurück,
obwohl das Array definitiv dimensioniert ist,
da sonst bestimmte Daten nicht verarbeitet würden.

Jetzt ein wenig Programmcode (Deklarationen).

Public Declare Function SafeArrayGetDim Lib "oleaut32" (pArray() As Any) As Long
 
Public gl_Bordero() As typeBordero
 
Public Type typeBordero
    borderonr As String
    borderodatum As String
    verkehrsart As String
    relation As String
    ffname As String
    ffplz As String
    ffort As String
    wp1 As String
    wp2 As String
    plombe1 As String
    plombe2 As String
    anzfp As String
    anzgp As String
    'ab hier nur schreiben
    fahrzeugnr As String
    sendzahl As String
    packzahl As String
    brutto As String
    stpfl As String
    stfrei As String
    nachnahme As String
    zoll As String
    eust As String
    anz_sb As String
    anz_gp As String
    anz_fp As String
    anz_cc As String
    anz_ad As String
    anz_bd As String
    anz_cd As String
End Type
 
'#########################################################
Public Type typeSetG
    borderopos As String
'.
'.
    dokumentation As String
End Type
 
Public Type typeSetH
    borderopos As String
    bcqual As String
    bc As String
End Type
 
Public Type typeSetF
    borderopos As String
    packanz As String
    verpackart As String
    packanzpal As String
    verpackartpal As String
    wareninhalt As String
    zeichen As String
    gewsend As String
    stell As String
    gefahrgut() As typeSetG
    barcode() As typeSetH
End Type
 
Public Type typeSendung
    borderopos As String
'.
'.
'.
    sendpos() As typeSetF
End Type
 
Public gl_Sendung As typeSendung
Die Prüfung erfogt mit ...
If SafeArrayGetDim(gl_Bordero) = 0 Then
oder
If SafeArrayGetDim(gl_SendIDs) <> 0 Then
oder
If SafeArrayGetDim(gl_Sendung.sendpos) = 0 Then
Die Anwendung wurde mit VB6.0 SP5 geschrieben und läuft als Dienst (siehe z.B. Tutorial hier in vb@rchiv)
auf einem Windows Server 2003 - Betriebsystem.
Die Anwendung läuft teilweise wochenlang ohne jeglichen Fehler und dient dem Einlesen von Schnittstellendateien in eine Datenbank (SQL Server 2000).

Der Fehler (fehlerhafte Rückgabe) tritt nicht nachstellbar bei oben beispielhaft dargestellter Prüfung auf.
Die API SafeArrayGetDim wird hierbei allerdings mehrmals pro Sekunde aufgerufen um insbesondere die UDT zu füllen bzw. abzuarbeiten.
Die Arrays werden mit der Erase-Anweisung gelöscht, UDTs werden mit folgendem Bsp. gelöscht ...

Dim t as typeSendung
gl_sendung = t
Da hier einzelne Dateien verarbeitet werden, tritt bei einem Dateien-Paket ein solcher Fehler auf,
beim Versuch den Fehler nachzustellen, tritt er nicht mehr auf (gleiches Paket, keine Änderung am Programmcode).
Der Fehler tritt bei einer Datei auf, bei der nächsten Datei innerhalb der gleichen Sekunde (Log) nicht, obwohl sich die Dateien
abgesehen von den Daten gleichen und jedesmal der exakt selbe Ablauf stattfindet.
Die Arrays werden auch definitiv innerhalb eines Ablaufs (einer Datei) nicht gelöscht.
Wir haben für diesen Fehler keine Erklärung. Auch intensive Suche im WWW (Google, Suchbegriff: SafeArrayGetDim) brachte uns nicht weiter.

Ich hoffe, daß jemand uns in diesem Fall weiterhelfen kann.

Danke im Voraus und Grüße
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Fehler bei SafeArraygetDim2.233radler21.09.04 18:54
Re: Fehler bei SafeArraygetDim1.123ModeratorMartoeng21.09.04 20:34
Re: Fehler bei SafeArraygetDim1.385radler22.09.04 11:39
Re: Fehler bei SafeArraygetDim1.428ModeratorMartoeng22.09.04 12:00

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel