Bankadresse für "C" finden. [gelöst mit Pointer]
Übersicht

funkheldBetreff: Bankadresse für "C" finden. [gelöst mit Pointer] |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo, guten Tag.
Wie kann ich hier raus bitte : Code: [AUSKLAPPEN] Graphics 600,400 global z:int Global bild:TImage=CreateImage(70,40) global Pix:TPixmap=LockImage(bild) global Adresse:byte Ptr = Pix.PixelPtr(0,0) global MyBank:TBank=CreateStaticBank (Adresse,12000) Repeat Cls for z=0 to 11200 step 4 MyBank.Pokeint z,$ff00ff00 next setcolor 255,255,255 DrawImage bild,100,100 Flip Until KeyHit (KEY_ESCAPE) die Bankadresse bekommen , damit ich in "C" beschreiben und lesen kann? Mit diesém Hilfetext kann ich nichts anfangen: Zitat: Buf : Method Buf:Byte Ptr() Description: Get a bank's memory pointer Returns: A byte pointer to the memory block controlled by the bank Information: Please use Lock and Unlock instead of this method. Danke. GRuss |
||
- Zuletzt bearbeitet von funkheld am Mi, Aug 24, 2016 17:28, insgesamt 4-mal bearbeitet
![]() |
FireballFlame |
![]() Antworten mit Zitat ![]() |
---|---|---|
Genau das, was du da zitierst, ist aber die Antwort auf deine Frage. Mit .Buf oder mit .Lock bekommst du den Pointer, den du suchst; nach letzterem solltest du dann irgendwann auch wieder .Unlock aufrufen.
Abgesehen davon, dass ich den Sinn von Banks allgemein zweifelhaft finde (mann kann ja auch einfach direkt mit dem Speicherblock arbeiten), ist mir aber nicht klar, wozu du das überhaupt brauchst. Du hast doch deine Adresse anscheinend schon und benutzt sie, um die Bank zu erstellen. Wozu willst du sie dann nochmal aus der Bank abfragen? |
||
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
funkheld |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Möchte die Adresse in einem "C-Code" verwenden zum ausprobieren.
In BlitzMax kann man ja auch mit "C" von MingW rumspielen. Habe schon kleine C-Programme geschrieben mit BlitzMax laufen. Da fehlt mir jetzt irgendwie...etwas...ich weiß nicht wie ich die übernehmen kann. Zitat: mann kann ja auch einfach direkt mit dem Speicherblock arbeiten Erkär das bitte einmal, wie ich auf das Image hier direkt zugreifen kann mit einem Pointer(Adresse) die ich auch in "C" benutzne kann ? -------------------------------------------------- global Pix:TPixmap=LockImage(bild) -------------------------------------------------- Danke. Gruss |
||
![]() |
FireballFlameBetreff: Re: Bankadresse für "C" raus finden... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nochmals: du hast deinen Pointer schon.
funkheld hat Folgendes geschrieben: Code: [AUSKLAPPEN]
global Adresse:byte Ptr = Pix.PixelPtr(0,0) Du benutzt ihn ja danach sogar zum Erstellen deiner Bank. Den Pointer kannst du aber auch gleich direkt benutzen, um auf deine Pixmap-Daten zuzugreifen, entweder in BlitzMax selbst oder indem du ihn als Parameter an eine in C geschriebene Funktion übergibst. Wie sowas geht, kannst du in der BlitzMax-Hilfe unter "Language/Advanced Topics/Pointers" und "Language/Advanced Topics/Interfacing with C" nachlesen, oder auch hier. |
||
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
funkheld |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hmmm...
Wenn ich die Adresse Printen möchte mit : global pixstring:string print pixstring.Fromint(adresse) Kommt : Unable to convert from Byteptr to Int Ich komm hier jetzt nicht weiter. Gruss |
||
![]() |
FireballFlame |
![]() Antworten mit Zitat ![]() |
---|---|---|
Musst ihn explizit nach Int casten.
Code: [AUSKLAPPEN] Print Int(adresse)
|
||
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
funkheld |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ah...danke.
Das war es. Vielen dank. Gruss |
||
funkheld |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Es klappt jetzt auch mit dem Pointer in "C" .
Danke. Gruss Code: [AUSKLAPPEN] Import "c_pixel1.c" Graphics 600,400 global z:int Global bild:TImage=CreateImage(70,40) global Pix:TPixmap=LockImage(bild) global Adresse:byte Ptr = Pix.PixelPtr(0,0) Extern Function pixel(Adresse:byte Ptr) End Extern Repeat Cls pixel(adresse) setcolor 255,255,255 DrawImage bild,100,100 Flip Until KeyHit (KEY_ESCAPE) So sieht der vereinfachte "C-Code" aus, der jetzt funktioniert, Jede Adresse ist ein Pixel. Code: [AUSKLAPPEN] void pixel(int *adresse) { adresse[0]=0xff00ffff; adresse[1]=0xff00ffff; adresse[2]=0xff00ffff; adresse[3]=0xff00ffff; adresse[4]=0xff00ffff; adresse[5]=0xff00ffff; adresse[6]=0xff00ffff; adresse[7]=0xff00ffff; adresse[8]=0xff00ffff; adresse[9]=0xff00ffff; adresse[10]=0xff00ffff; adresse[11]=0xff00ffff; } |
||
- Zuletzt bearbeitet von funkheld am Do, Aug 25, 2016 8:55, insgesamt 6-mal bearbeitet
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was man absperrt muss man auch wieder aufschliessen... | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
funkheld |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Kann jetzt von BlitzMax Farbe, Größe usw übergeben....
Danke. Gruss Code: [AUSKLAPPEN] int b; void pixel(int *adresse, int f, int z) { for(b=0; b<z; b++) { adresse[b]=f; } } Zitat: Was man absperrt muss man auch wieder aufschliessen... Da gebe ich dir recht. Danke. Gruss |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group