Verweis auf String

06/10/2007 - 19:45 von Volker Mattstedt | Report spam
Hallo,

ich benutze dieses ImageEnX ActiveX hier: (http://www.hicomponents.com/).
Dies ist eine Komponente, um Bilder einlesen und bearbeiten zu können. Ich
nutze das Teil aber lediglich als stabilen Ersatz zu VB-LoadPicture.

Falls ihr das Control nicht kennt: Kein Problem, es geht mir mehr um eine
grundsàtzliche Frage zu VB String Pointern.

Normalerweise lade ich Bilder mit dem LoadFromFileAuto... Kommando. Dabei
wird das Bild von der Festplatte eingelesen.

Nun möchte ich aber ein bereits im String-Speicher befindliches Bild mittels
LoadFromBuffer Befehl einlesen. Grund: Ich habe das Bild bereits durch einen
Download in einem String, d.h. ich möchte nicht extra den String als Bild
temporàr auf der Platte speichern, um es dann wieder zu laden und das File
wieder zu löschen.

Ich möchte also das Bild, welches sich in einer String Variablen befindet,
direkt einlesen.

Der Autor von ImageEnX schreibt zu dem Befehl LoadFromBuffer :










































































LoadFromBuffer Buffer as Longint, BufferSize as Longint, Format as Longint

Loads an image from the specified buffer.
Buffer is the buffer pointer.
BufferSize is the buffer length in bytes.
Format specifies the expected file format.










































































Also habe ich ganz mutig mal folgendes probiert (zur Veranschaulichung auch
noch der Teil, wie das Bild testweise in den String gelesen wird. In meinem
Programm ist das Bild bereits durch den Download in String C enthalten)):










































































dim C as string
dim j as long
dim FF As Integer

FF = FreeFile
Open "c:\meinbild.jpg" For Binary Access Read As #FF
C = Space$(LOF(FF))
Get #FF, , C
Close #FF

j = StrPtr(C)
Call ImageEnX1.LoadFromBuffer(j, LenB(C), 0) 'der letzte Parameter 0
bewirkt, daß jedes Bildformat erkannt wird










































































Tut's leider nicht, wàre ja auch zu schön gewesen.

Ich muss zugeben, ich habe da auch keinen Plan, wie ich anders auf den
String Buffer verweisen soll. Der Autor von ImageEnX kennt sich leider nicht
mit VB aus.

Hat jemand eine Idee? Wàre echt klasse!

Danke und Grüsse,
Volker
 

Lesen sie die antworten

#1 Wolfgang Enzinger
06/10/2007 - 21:27 | Warnen spam
Hallo Volker,

ich benutze dieses ImageEnX ActiveX hier: (http://www.hicomponents.com/).
Dies ist eine Komponente, um Bilder einlesen und bearbeiten zu können. Ich
nutze das Teil aber lediglich als stabilen Ersatz zu VB-LoadPicture.



ich kenne das Tool zwar nicht, aber ...


















































dim C as string
dim j as long
dim FF As Integer

FF = FreeFile
Open "c:\meinbild.jpg" For Binary Access Read As #FF
C = Space$(LOF(FF))
Get #FF, , C
Close #FF

j = StrPtr(C)
Call ImageEnX1.LoadFromBuffer(j, LenB(C), 0) 'der letzte Parameter 0
bewirkt, daß jedes Bildformat erkannt wird


















































Tut's leider nicht, wàre ja auch zu schön gewesen.



... ich könnte mir vorstellen, dass es mit den Unicode-Strings, mit
denen VB arbeitet, nicht klarkommt. Dann würde es helfen, den String
zuvor in ein Byte-Array umzuwandeln:

Dim b() As Byte
b() = StrConv(C, vbFromUnicode)
Call ImageEnX1.LoadFromBuffer(VarPtr(b(0)), LenB(C), 0)

Geht das?

Viele Grüsse,
Wolfgang
http://www.enzinger.net

Ähnliche fragen