Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Array von VisualBasic aus an FB-DLL übergeben

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Bibliotheken
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 18.06.2005, 14:02    Titel: Array von VisualBasic aus an FB-DLL übergeben Antworten mit Zitat

Hallo,

da VB so lahm ist, kam mir die Idee, ein paar Funktionen eines VisualBasic Programms wie Sortiersubs usw. in eine FB-DLL auszulagern. Problem dabei: Wie kann ich ein beliebig großes Array an eine Sub in einer DLL weitergeben, sodass diese es auch ändern sprich sortieren kann?

Viele Grüße!
Sebastian
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
PeterHarder



Anmeldungsdatum: 27.03.2005
Beiträge: 45
Wohnort: Deutschland

BeitragVerfasst am: 18.06.2005, 23:47    Titel: Antworten mit Zitat

Hallo Sebastian,

es hat schon mal jemand in PowerBasic so eine Hilfs-DLL für VB geschrieben, die Arrays schnell sortiert und all sowas. So viel ich weiß ist aber der Quellcode dafür nie veröffentlicht worden. Ich hab' die Hilfe zu dieser DLL, aus der kopiere ich mal die Sortier-Funktionsaufrufe hier rein. Dann weißt du schon mal, wie VB diese DLL's aufruft, anhand dessen kann man dann weiterarbeiten. Im Prinzip braucht FB nur also Pointer die Anfangsadresse des Arrays, die Endadresse (bzw. Anzahl der Elemente) und den Typ (also Short, Integer, Double oder was). Den Rest muss FB dann daraus ableiten und die Sortierung an genau den Adressen vornehmen, bzw. wenn es fertig ist dort ablegen.

Schönen Sonntag noch!

Liebe Grüße

Peter

=========================

VBEx32.DLL - ARRAY-FUNKTIONEN

VBSORTARRAY-Funktion

Genau: Sortiert ein eindimensionales Array. Die Parameter deuten darauf hin, dass Sie sowohl aufsteigend als auch absteigend sortieren können und aber auch, wo die Sortierung beginnt und endet! Sprich: Sie können ein Array teilweise sortieren lassen. Dass das Ganze in einem atemberaubenden Tempo geschieht, müssten Sie mittlerweile mitbekommen haben lächeln), weil sonst würden wir so eine Funktion nicht einführen. Die Routine ist sehr erheblich schneller als Quicksort - oder jede andere Sortierroutine, die Sie von VB her kennen, da VBEx32.DLL Zeigeroperationen anwendet.
Code:
' String
Public Declare Sub VBEX_SortStringAr Lib "vbex32.dll" _
  Alias "VBSORTARRAYSTR" ( _
  sArr() As String, _
  ByVal nVon As Long, _
  ByVal nBis As Long, _
  ByVal nDirection As Byte)
 
' Integer
Public Declare Sub VBEX_SortIntegerAr Lib "vbex32.dll"_
  Alias "VBSORTARRAYI" ( _
  ssArr() As Integer, _
  ByVal nVon As Long, _
  ByVal nBis As Long, _
  ByVal nDirection As Byte)

' Long
Public Declare Sub VBEX_SortLongAr Lib "vbex32.dll" _
  Alias "VBSORTARRAYL" ( _
  sArr() As Long, _
  ByVal nVon As Long, _
  ByVal nBis As Long, _
  ByVal nDirection As Byte)

' Byte
Public Declare Sub VBEX_SortByteAr Lib "vbex32.dll" _
  Alias "VBSORTARRAYB" ( _
  sArr() As Byte, _
  ByVal nVon As Long, _
  ByVal nBis As Long, _
  ByVal nDirection As Byte)

' Single
Public Declare Sub VBEX_SortSingleAr Lib "vbex32.dll" _
  Alias "VBSORTARRAYS" ( _
  sArr() As Single, _
  ByVal nVon As Long, _
  ByVal nBis As Long, _
  ByVal nDirection As Byte)

' Double
Public Declare Sub VBEX_SortDoubleAr Lib "vbex32.dll" _
  Alias "VBSORTARRAYD" ( _
  sArr() As Double, _
  ByVal nVon As Long, _
  ByVal nBis As Long, _
  ByVal nDirection As Byte)

' Currency
Public Declare Sub VBEX_SortCurrencyAr Lib "vbex32.dll" _
  Alias "VBSORTARRAYC" ( _
  sArr() As Currency, _
  ByVal nVon As Long, _
  ByVal nBis As Long, _
  ByVal nDirection As Byte)

Bingo: Womit schon mal der erste Parameter erklärt ist: Er bestimmt das Feld und den Variablentyp aus dem das Feld besteht ... ganz easy! Und das ist in allen 28 Funktionen gleich!!!

nVon: Startindex ab der eine Operation beginnt
nBis: Endwert(Index) bis zu der eine Operation dauert.

Soll alles sortiert werden, setzen Sie die Parameter nVon und nBis auf Null.

nDirection: Gibt die Richtung an: 0 = Aufsteigend = 0 bzw. 1 = absteigende Sortieruung

Beispiel:
Code:
ReDim iArray(2) As Integer
iArray(0) = 3
iArray(1) = 1
iArray(2) = 2

' gesamtes Array aufsteigend sortieren
VBEX_SortIntegerAr iArray(), 0, 0, 0

_________________
Deutsche Mailingliste für freeBASIC: de.groups.yahoo.com/group/free-basic.
Zum Anmelden einfach eine leere E-Mail an free-basic-subscribe@yahoogroups.de senden.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 19.06.2005, 08:58    Titel: Antworten mit Zitat

Hallo.

Danke, das sieht ja sehr vielversprechend aus, werd ich gleich mal ausprobieren. happy

Viele Grüße!
Sebastian
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Bibliotheken Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz