• 22.08.2025, 23:12
  • Registrieren
  • Anmelden
  • Du bist nicht angemeldet.

 

larsm

Senior Member

Visual Basic 6 Prob!

Donnerstag, 13. Oktober 2005, 01:41

naben!

ich will ein programm in vb 6 schreiben, das auf mehreren "seiten" verschiedene bilder anzeigt. dazu wäre es am besten, wenn ich irgendwie die image-steuerelemente 2-dimensional indizieren könnte. also image1(5,8)... zb. bei arrays geht das ja, aber hier bekomme ich immer fehler.

lars

sebastian

Administrator

Re: Visual Basic 6 Prob!

Donnerstag, 13. Oktober 2005, 10:25

hi,
ich kann dir nicht zu 100% sagen wie es in VB6 geht, aber in VB.net gets so.

Dim myImageList(4) As System.Windows.Forms.ImageList
Jetzt musst du natülich noch jede ImagelIst instanzieren.

aber die Lösung ist irendwie ,.. naja.

Machs Doch so:
Dim myImageArray(10, 10) As System.Drawing.Image
jezt musst du noch per hand alle bilder zuweisen, oder automatisch laden, und dann kannst du die Bilder im 2Dimensionalen Array ansprechen.

Sebastian

DAP

God

Re: Visual Basic 6 Prob!

Donnerstag, 13. Oktober 2005, 11:10

afaik is sowas mit vb6 nicht möglich, sebastians beispiel dürfte nur in vb7/.net funktionieren... benutz ne vernünftige programmiersprache ;)

larsm

Senior Member

Re: Visual Basic 6 Prob!

Sonntag, 16. Oktober 2005, 12:08

danke für die tipps! scheint wirklich nicht zu funzen. ich habe jetzt eine viel bessere lösung: habe ein udercontrol gemacht in dem die images noch viel besser verwaltet werden können. man entdeckt echt immer wieder was neues...

"benutz ne vernünftige programmiersprache"
was ist vernünftig? das was ich vor habe geht bestimmt auch in c++, java oder so. nur bin ich nichtmal in der lage in einer dieser sprachen überhaupt ein fenster auf den bildschirm zu bringen. vb.net ist laahhm und unbrauchbar, weil man immer dieses net framework installieren muss. also ist vb6 für mich die beste alternative.

5reimo

God

Re: Visual Basic 6 Prob!

Sonntag, 16. Oktober 2005, 14:09

Object Pascal a.k.a. Delphi finde ich sehr nett, wenn man für sich kleine bis mittelgroße Projekte schreiben will.

sebastian

Administrator

Re: Visual Basic 6 Prob!

Montag, 17. Oktober 2005, 11:33

@larsm
Programme die auf das .net Framework aufsetzen (egal ob C# oder VB.Net) sind meist um mehrere 100% schneller als in VB6 geschriebene Programme, von der ladezeit mal abgesehen, aber das ist ja auch nicht wichtig. Viel wichtiger ist ja das laufzeitverhalten.
Und VB6 ist NICHT objektorientiert.

Sebastian

larsm

Senior Member

Re: Visual Basic 6 Prob!

Montag, 17. Oktober 2005, 22:12

naja, ich würde die prioritäten anders verteilen: mir ist es wichtig, dass meine exen "überall" ohne framework laufen. vb6 kann auch sau schnell! nur gewusst, wie. man muss halt viel per pointer und api machen und die teils sehr lahmen vb6 internen funktionen weglassen.

wie nicht objektorientiert? also ich arbeite da eigrntlich nur mit objekten, klassen, ...?

noch ein grund gegen .net: ich müsste es kaufen

Y0Gi

God

Re: Visual Basic 6 Prob!

Montag, 17. Oktober 2005, 22:24

.exe-files und überall... ;)

larsm

Senior Member

Re: Visual Basic 6 Prob!

Dienstag, 18. Oktober 2005, 19:58

Mit folgendem Code wandele ich meinen Byte-Array mit einem Bild drin in ein gdi+ objekt um:

Quellcode

1
2
3
4
5
6
7
Dim iImageStream As IUnknown, Ptr_GdipImage As Long
If (CreateStreamOnHGlobal(VarPtr(mybuff(0)), 0, iImageStream) = 0) Then
 If (GdipLoadImageFromStream(iImageStream, Ptr_GdipImage) <> 0) Then
  MsgBox "Couldn't GdipLoadImageFromStream!"
 End If
 Set iImageStream = Nothing
End If


Das ganze steht in einer Klasse, die jeweils ein Bild im Speicher halten soll. Wenn ich jetzt 10 verschiedene Bilder so geladen habe in verschiedenen instanzen der Klasse, dann hat Ptr_GdipImage immer den selben Wert!? Das ist doch der Pointer, der auf die Stelle im Ram zeigt, wo das Bild liegt? Also MUSS Ptr_GdipImage sich doch ändern!?

Wenn ich den "Set iImageStream = Nothing" nicht ausführen lasse, dann müssten die "IStreams" (was immer das auch ist) doch im ram bleiben? Tun sie aber nicht! Ich lege Objekte an, ohne sie zu löschen und sie löschen sich praktisch selber!?