Instr & Textlänge

11/01/2010 - 22:01 von Juergen Thuemmler | Report spam
Hi *.*,

ich lese den Inhalt einer Exe in eine Stringvariable "dummy" und rufe dann
pos = Instr(1, dummy, "1234", 1)
auf.
Im konkreten Fall hat "dummy" 17 MB, und der Funktionsaufruf hàngt. Ich
konnte aber keine Info über Beschrànkungen von "Instr()" finden. Weiß jemand
etwas genaueres?

Jürgen.
 

Lesen sie die antworten

#1 Thorsten Albers
12/01/2010 - 00:28 | Warnen spam
Juergen Thuemmler schrieb im Beitrag
...
ich lese den Inhalt einer Exe in eine Stringvariable "dummy" und rufe


dann
pos = Instr(1, dummy, "1234", 1)
auf.
Im konkreten Fall hat "dummy" 17 MB, und der Funktionsaufruf hàngt. Ich
konnte aber keine Info über Beschrànkungen von "Instr()" finden. Weiß


jemand
etwas genaueres?



Ich kenne keine deratigen Beschrànkungen.

Aber: Der Weg, den Du wàhlst, ist wahrscheinlich sowieso nicht für Deine
Zwecke geeignet, denn wenn Bytes aus einer Datei in eine VB-String-Variable
eingelesen werden, entspricht der Inhalt der String-Variablen nicht mehr
unbedingt den Bytes in der Datei, da einige Zeichen mit Zeichencodes von 0
bis 255 von VB intern in der Regel (je nach Codepage) auf die
entsprechenden Unicode-Zeichen > 255 gemappt werden. Beim Einlesen einer
EXE soll aber sicherlich 100%ige Übereinstimmung bestehen.
Zudem ist das natürlich sinnlose Speicherverschwendung, da die 17 MB
Dateiinhalt, in einen VB-String eingelesen, 34 MB Speicher belegen (2 Byte
pro Zeichen).

Verwende besser ein Byte-Array und wende auf dieses dann InstrB() an.
Sollte auch InstrB() hàngenbleiben, würde ich einfach auf ein Durchsuchen
mit eigenem Code ausweichen.

Thorsten Albers

albers (a) uni-freiburg.de

Ähnliche fragen