vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

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

VB.NET - Ein- und Umsteiger
Array-Organisation VB6 / VB 2005 / C++ 
Autor: Manfred X
Datum: 04.03.08 14:35


Guten Tag !


Ich habe vor einiger Zeit bei einem umfangreichen VB6-Programm rechenzeitintensive Routinen mit VC6++ gecodet und sie in eine ActiveX-DLL ausgelagert.

Das VB-Hauptprogramm übergibt die (umfangreichen) Daten in Arrays per Zeiger ( = Startposition im Speicher; VarPtr-Funktion) an die C-Routinen. Die C-Routinen sind dafür ausgelegt, den Inhalt mehrdimensionaler VB6-Arrays als Daten-Vektor zu verarbeiten.

Bei der Umstellung des Programms auf die Net-Sprachen (also von VB6 auf VB2005 und von VC6++ auf C++2005 bzw. 2008) übergebe ich die Daten an eine C++Klassenbibliothek "verwaltet" und nutze dann innerhalb von C++ den 'pin_ptr'
(quasi als Ersatz für VarPtr) um die Daten im Speicher temporär zu fixieren und
den für die C-Routinen benötigten Zeiger zu erhalten. Das klappt einwandfrei und scheint auch recht effizient zu sein. (Der 'pin_ptr' ermöglich laut Doku low-level-Zeiger-Zugriffe direkt auf Bereiche des verwalteten Speichers.)

Aber:

Die Anordnung der Elemente mehrdimensionaler Arrays im verwalteten Speicher ist nicht mit der Anordnung in VB6 kompatibel (Abfolge ergibt sich aus einer anderen Reihenfolge der Indizierung). Eine Umorganisation der Daten ist deshalb vor Übergabe an die C-Routinen notwendig geworden.

Eine Umstellung der Speicherzugriffe (z.B. auf verwaltete Arrays) in den C-Routinen ist nicht geplant, weil der Code auch künftig in beiden Basic/C++-Varianten parallel verwendet werden soll und zudem sehr umfangreich ist.

Dazu folgende Fragen:

Kann man im Net-Framework (Version 2, 3, ...) irgendwie einstellen, dass die Anordnung der Arrayelemente (System-Arrays) VB6-kompatibel gestaltet wird ?

Gibt es Möglichkeiten, die Art der Speicherorganisation über Projekteinstellungen oder über den Programmcode zu steuern?

(Ich möchte nicht in die automatische Verwaltung des Heap eingreifen, sondern lediglich auf die Organisation der Elemente der System-Arrays Einfluss nehmen.
Ich möchte für den Datenzugriff auch nicht in den sog. nicht-verwalteten Speicher wechseln, das Marshaling vermutlich mindestens so viel Zeit kostet wie die Reorganisation innerhalb des verwalteten Speichers).

Liegt die Ursache des Problems vielleicht darin, dass der 'pin_ptr' im geschilderten
Fall nicht die geeignete Zugriffs-Methode auf den Speicher ist? Gibt es Alternativen?

Ich bedanke mich für Euer Interesse und für alle Hinweise!

Gruß

Manfred
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Array-Organisation VB6 / VB 2005 / C++1.718Manfred X04.03.08 14:35
Re: Array-Organisation VB6 / VB 2005 / C++1.051Moderatorralf_oop04.03.08 20:59
Re: Array-Organisation VB6 / VB 2005 / C++1.092Manfred X05.03.08 11:02
Re: Array-Organisation VB6 / VB 2005 / C++1.184ModeratorDaveS04.03.08 21:45
Re: Array-Organisation VB6 / VB 2005 / C++1.183Manfred X05.03.08 11:07
Re: Array-Organisation VB6 / VB 2005 / C++1.108ModeratorDaveS05.03.08 14:24
Re: Array-Organisation VB6 / VB 2005 / C++1.148Manfred X06.03.08 13:33
Re: Array-Organisation VB6 / VB 2005 / C++1.024ModeratorDaveS06.03.08 13:57
Re: Array-Organisation VB6 / VB 2005 / C++1.104Melkor06.03.08 16:03
Re: Array-Organisation VB6 / VB 2005 / C++1.074Manfred X07.03.08 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-2025 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