| |
|
|
| Salut, mir ist aufgefallen, qui qui FindBytes-Befehl aucun Bytes avec den Werten 01-15 trouver peux (ou bien Bytefolgen dans denen solche Werte vorkommen). Gibts pour une Grund ou bien habe je là quelque chose faux gemacht? je voudrais avec qui Routine qui Position bestimmter Punkte ou bien Pixel-Areale dedans einer Bitmap chercher, dabei venons obige Werte wahrscheinlich aussi avant. je hab qui Routine avec einem Profan-Bereich# et einem InitExtFX()-Array ausprobiert et aussi qui paramètre- übergabe via Chr$(x) ou bien einem zweiten Array, avec gleichem Ergebnis. MfG Dieter |
|
|
| |
|
|
|
| Salut,
Frank ist im Moment im Urlaub (qui glückliche !) deswegen musst du vorerst avec mir vorlieb prendre ;) ou bien du wartest jusqu'à Frank wieder voilà.
de einem faute dans FindBytes c'est moi jusqu'à maintenant rien bewusst ! Poste doch la fois am besten cela Codestück, je guck la fois si je là quoi trouver peux.
Moritz |
|
|
| |
|
|
|
| allô Moritz, seulement aucun falsche Bescheidenheit, tu peux toi volontiers avec cela beschäftigen .ici qui Code, qui auskommentierten Zeilen am Ende hab je aussi probiert. si du cela Dispose memory# am Anfang weglässt peux du qui Routine aussi la fois sur den Profan- Bereich testen. qui partie-Hexdump ist une kleine Bitmap, avec Paint erstellt. j'ai simple avec dem Hexeditor Bytefolgen reingeflickt et chercher laisser. qui Bytefolge 128 7 128 sollte à Adresse $5D trouvé volonté, funktioniert chez mir mais pas. si on statt qui 7 à Adresse $5E mais une 8 mets et pour 128 8 128 cherchez, ensuite klappts wieder. ou bien versuch la fois z.B. à Adresse $37 statt qui $10 quelque chose kleineres (ausser 8) trop mettons et z.B. pour 16 5 32 trop chercher. chez Einzelbytes ist es genauso. si quelque chose unklar son sollte, melde toi. Dieter KompilierenMarqueSéparationDeclare neu&,text$,such$,lenght&,breite&,höhe&,grösse&
Declare hdc1&,array1&,arrayadr1&
Declare memory#,bereich2#,pixpos&
Dim bereich2#,3
$I Prospeed_Funktionen.inc
*** Profan Hauptprogramm
SetTrueColor 1
neu&=usedll("ProSpeed.dll")
rem
Window (%maxx/2-400),(%maxy/2-300)-800,600
Cls 0
*** Daten und Bitmaps laden und initieren
text$="12_17pixel.bmp"
rem
lenght&=@FileSize(text$)
If lenght&>0
Dim memory#,lenght&
ReadFileFast(addr(text$),memory#,0,lenght&)
hdc1&=LoadExtMemory(memory#,lenght&)
Dispose memory# Profan-Bereich
EndIf
array1&=InitExtFX(hdc1&)
rem Header auslesen
arrayadr1& = Long(array1&,40)
breite& = Long(array1&,4)
höhe& = Long(array1&,8)
grösse& = Long(array1&,20)
rem Suchparameter setzen + suchen
such$ = @Chr$(128)+@Chr$(7)+@Chr$(128)
pixpos& = FindBytes(arrayadr1&,0,grösse&,Addr(such$),3)
rem Ausgabe
Print lenght&,arrayadr1&,breite&,höhe&,grösse&
Print "Pos>";pixpos&
waitkey
pixpos& = @MemPos(memory#,0,such$)
string bereich2#,0= @Chr$(128)+@Chr$(0)+@Chr$(128)
byte bereich2#,0= 128
byte bereich2#,1= 1
byte bereich2#,2= 128
pixpos&=FindBytes(arrayadr1&,0,grösse&,Addr(such$),1)
pixpos&=FindBytes(arrayadr1&,0,grösse&,bereich2#,3)
00000000 42 4D 9A 02 00 00 00 00 00 00 36 00 00 00 28 00
00000010 00 00 0C 00 00 00 11 00 00 00 01 00 18 00 00 00
00000020 00 00 64 02 00 00 C4 0E 00 00 C4 0E 00 00 00 00
00000030 00 00 00 00 00 00 10 10 20 30 10 00 FF FF FF FF
00000040 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
00000050 FF FF FF FF FF FF FF 00 00 00 10 02 10 80 07 80
00000060 FF FF ../../function-references/XProfan/ff/'>FF
|
|
|
| |
|
|
|
| So comment je cela maintenant verstanden hab, cherches du dans dem Array pour une Pixel qui den Farbwert @rgb(128,7,128) hat, ou bien ?
ensuite versteh je allerdings qui benutzung de @chr() zum zusammen mettons des Suchstrings pas, cet Funktion liefert dir doch Buchstaben zurück. dans deinen Suchstring steht ensuite €|€ ! peux on überhaupt avec einem String pour Bytefolgen chercher ? Hab jusqu'à maintenant à peine avec FindBytes gearbeitet, mais cela währ mir récente. Scheint mais wohl doch irgendwie trop marcher, comment du geschrieben la hâte
Moritz |
|
|
| |
|
|
|
| Moritz, es scheint pas irgendwie trop marcher, c'est völlig normal une Suchstring sur cet Weise trop generieren, anders pourrait on oui bestimmte Steuerzeichencodes pas eintragen. qui Suchroutine wandelt den String oui wieder dans qui ANSI-Codezahlen um et cherchez pour cette Zahlenwerten et pas pour Buchstaben. quoi qui Werte letztendlich aussagen ist irrelevant. cela Suchbeispiel Frank aus qui prospeed-Aider pourrait on so ou bien so eingeben: such$ = Frank ou bien such$ = @Chr$(70)+@Chr$(114)+@Chr$(97)+@Chr$(110)+@Chr$(107). Ist beides même chose. Incidemment habe je oui am Ende des Listings qui Suchcodes aussi avec dem byte bereich2#,x=y -Befehl à une 2.Bereich transfert et avec cela (ergebnislos) gesucht. j'ai deinen Einwand mais quand même überprüft et dabei herausgefunden qui je aussi quelque chose schieflag. qui FindBytes-Routine peux pas seulement Werte<15 pas trouver mais stolpert sur Suchwerte qui pas glatt par 8 teilbar sommes (et encore quelques autre, z.B. la valeur 88). ca scheint plutôt sur un Problem dedans qui Suchroutine hinzudeuten. cela obige Suchbeispiel z.B. funktioniert chez Je ne.
MfG Dieter |
|
|
| |
|
|
|
| Salut,
>>Die Suchroutine wandelt den String oui wieder dans qui ANSI Codezahlen um et cherchez pour cette Zahlenwerten et pas pour Buchstaben<<
Ahh, ok, cela wusst je pas, ensuite ergibts naturellement wieder Sinn ! mais pourquoi manche Werte pas erkannt volonté sais je aussi pas, solange vous sous 256 liegen dürft es oui aussi aucun Probleme donner. Muss irgendwie une Inkompabilität entre den Ansi marque et den payons son ou bien quelque chose comme, werds aussi la fois testen, hab im Moment mais wenig Zeit, deswegen wohl plutôt demain.
Moritz |
|
|
| |
|
|
|
| Hi,
kurz la fois aus meinem Urlaub... ) FindBytes() funktioniert korrekt, comment cela untenstehende Beispiel beweist. comme Ergebnis wird 801 ausgegeben. si du autre payons dans cela Beispiel übernimmst, wirst du aussi vite merken, cela deine Theorie avec den niedrigen payons et payons, qui par huit teilbar sommes, faux ist. KompilierenMarqueSéparationDeclare neu&,x&,y&,z&,text$,bereich#,eingabe#
Dim bereich#,20001
Dim eingabe#,1024
*** Alle Dll-Funktionen einbinden
$I Prospeed_Funktionen.inc
*** Profan Hauptprogramm
SetTrueColor 1
neu&=usedll("ProSpeed.dll")
WindowStyle 80
Window 0,0-800,600
Cls 0
Clear Eingabe#
String Eingabe#,0="120,128,7,128,124,125,126"
SetBytes(Bereich#,800,eingabe#)
text$=Chr$(128)+Chr$(7)+chr$(128)
x&=FindBytes(bereich#,0,20000,Addr(text$),3)
Print x&
WaitInput
freedll neu&
Dispose bereich#
Dispose eingabe#
FIN
comment la hâte du cela untere Hex-Array dans deinem Beispielcode car überhaupt erzeugt ? sommes cela Werte qui originalen Bitmap ? ou bien un abgespeichertes Byte-Array ? tu dois savons, cela Windows qui Bitmaps comme Bytes dans einem Byte-Array avec leichten Variationen einsetzt, aus 128,7,128 wird alors léger 127,7,128, aussi allez qui Pixel-Reihenfolge dans einem Bytes-Array de unten à gauche unten pour droite dessus ! cela gilt es trop tenir compte de... si je aus meinem Urlaub wieder zuhause suis (samedi), werde je dein Beispiel la fois genauer testen.
Moritz: je hab super Wetter et chacun la quantité Amusement...
Salut, Frank |
|
|
| |
|
|
|
| >>Du dois savons, cela Windows qui Bitmaps comme Bytes dans einem Byte-Array avec leichten Variationen einsetzt, aus 128,7,128 wird alors léger 127,7,128, aussi allez qui Pixel-Reihenfolge dans einem Bytes-Array de unten à gauche unten pour droite dessus !<<
cela wird cela Problem son ! Ha, olle Bill Gates hat la fois wieder schuld
Moritz |
|
|
| |
|
|
|
| allô Frank, tu as völlig droite, cela hat mir gedämmert comme je später cela Beispiel aus qui prospeed-Aider 1:1 übernommen habe et la fois avec Getpixel() vom Screen gelesene données avec einem gespeicherten File verglichen habe. alors cela était mir oui völlig récente. J'ai pensé toujours Farbwert ist Farbwert. qui Unterschiede sommes oui partiellement encore viel stärker comme dans deinem Beispiel. Bleibt une Frage, laisser sich qui Unterschiede mathématique nachvollziehen, d.h. peux on sich puis sortir de dass qui Abweichungen toujours juste ausfallen ou bien volonté qui Werte vom System sozusagen kreativ sur den digitalen pouce gepeilt? merci incidemment pour deine schnelle Antwort, sogar aus dem Urlaub. MfG Dieter |
|
|
| |
|
|
|
| hi,
byte-arrays verwaltet prospeed interne toujours dans 24 bit, windows incidemment aussi. chez qui change de 32 sur 24 bit passer arrêt cet kleiner faute... soweit je sais, peux cet verhalten im system irgendwo eingestellt volonté, sais mais pas oui c'est ca, wohin...
frank, qui aus dem urlaub wieder voilà, mais malheureusement avec einer schultereckgelenkssprengung, bänderriss dans qui schulter ... prochain semaine hab je mon op..... doit maintenant avec à gauche écrivons et souris lenken... |
|
|
| |
|
|