| |
![zurück](../images/b_zurueck.gif)
VB & Windows APIFehler bei SafeArraygetDim | | ![](../images/trans.gif) | 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 | ![](../images/trans.gif) |
![](../images/48x48/info.gif) | 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 |
![nach oben](../images/b_top.gif) ![zurück](../images/b_zurueck.gif) |
|
Neu! sevPopUp 2.0 ![sevPopUp für VB/VBA und VB.NET](../images/werbung/sevpopup_100x100.jpg)
Dynamische Kontextmenüs!
Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Weitere InfosTipp des Monats Access-Tools Vol.1 ![Access-Tools CD Vol.1](../images/werbung/apvol1_68x100.gif)
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
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
|
|