Farbe resetten und wann Module einbauen.....?

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

 

funkheld

Betreff: Farbe resetten und wann Module einbauen.....?

BeitragMi, Aug 17, 2016 11:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, guten Tag.

Ich habe hier meine Robotersteuerung die auch funktioniert.
Mit dem Programm "WinExec Chr$(34) + "d:/blitzmax/esp_blitzmax.exe" + Chr$(34), 1" kann ich jetzt die gesendeten http-Daten vom Roboter empfangen und schicke sie über das Clipboard zum BlitzMax-Programm.
Es funktioniert wunderbar.

Warum läuft das Programm ohne Moduleinbindung obwohl ich den Timer benutze?
Werden bestimmte Module automatisch eingebunden?

Ich habe in der Funktion Button die Farbe der Button auf Rot und resette die anschießend wieder auf 255.
Ist das resetten der Farbe bei Änderung immer notwendig?

Danke.
GRuss

Code: [AUSKLAPPEN]

Extern "Win32"
   Function OpenClipboard(hwnd:Int)
   Function CloseClipboard()
   Function EmptyClipboard()
   Function SetClipboardData(format:Int,hMem:Byte Ptr)
   Function GetClipboardData:Byte Ptr(Format:Int)
   Function GlobalAlloc:Byte Ptr(uflags:Int,bytes:Int)
   Function GlobalFree(buffer:Byte Ptr )
   Function WinExec(lpCmdLine$z, nCmdShow)
End Extern

Const GMEM_FIXED = 0
Const CF_TEXT=$01
global ClipText:String

Global timer:TTimer = CreateTimer(60)

WinExec Chr$(34) + "d:/blitzmax/esp_blitzmax.exe" + Chr$(34), 1
delay(2000)

Graphics 400,400, 0, 60

While Not AppTerminate()
 cls

 ClipText = TextFromClipboard()
 If ClipText
    setcolor 255,255,255
    drawtext ClipText,10,220
  EndIf

  If Button(100, 15, 40,20, "vor", 0) Then
    loadstring("http::192.168.2.102/?pin=vor")
  end if
   If Button(10, 40, 40,20, "li", 1) Then
    loadstring("http::192.168.2.102/?pin=links")
  end if
  If Button(55, 40, 40,20, "hli", 2) Then
    loadstring("http::192.168.2.102/?pin=hlinks")
  end if
  If Button(100, 40, 40,20, "mit", 3) Then
    loadstring("http::192.168.2.102/?pin=mitte")
  end if
  If Button(145, 40, 40,20, "hre", 4) Then
    loadstring("http::192.168.2.102/?pin=hrechts")
  end if
  If Button(190, 40, 40,20, "re", 5) Then
    loadstring("http::192.168.2.102/?pin=rechts")
  end if
  If Button(100, 65, 40,20, "zur", 6) Then
    loadstring("http::192.168.2.102/?pin=zur")
  end if

  If Button(100, 100, 40,20, "ser0", 7) Then
    loadstring("http::192.168.2.102/?pin=ser0")
  end if
  If Button(145, 100, 40,20, "ser1", 8) Then
    loadstring("http::192.168.2.102/?pin=ser1")
  end if
  If Button(100, 125, 40,20, "sha", 9) Then
    loadstring("http::192.168.2.102/?pin=sharp")
  end if

  If Button(190, 100, 40,20, "v0", 10) Then
    loadstring("http::192.168.2.102/?pin=v0")
  end if
  If Button(190, 125, 40,20, "v1", 11) Then
    loadstring("http::192.168.2.102/?pin=v1")
  end if
  If Button(190, 150, 40,20, "v2", 12) Then
    loadstring("http::192.168.2.102/?pin=v2")
  end if

   Flip 0
   WaitTimer(timer)
Wend

Function Button:Int(x:Short, y:Short, w:Byte, h:Byte, name:String, id:Byte)
   Global mouse_state:Int = -1

  setcolor 255,0,0
   Drawrect x, y, w,h
   setcolor 255,255,255

   If MouseDown(1) And MouseX() >= x And MouseY() >= y And MouseX() =< x+w And MouseY() =< y+h Then
      DrawText name, x + w/2 - TextWidth(name)/2 + 2, y + h/2 - TextHeight(name)/2 + 2
      mouse_state = id
   Else
      DrawText name, x + w/2 - TextWidth(name)/2, y + h/2 - TextHeight(name)/2
      If mouse_state = id Then
         mouse_state = -1
          FlushMouse()
         Return True
      End If
   End If
End Function

Function TextFromClipboard:String()   
      If Not Openclipboard(0)
         Return ""
      EndIf
       
      Local TextBuf:Byte Ptr
       
      TextBuf = GetClipboardData(CF_TEXT)
      CloseClipboard()
       
      Return String.FromCString(TextBuf)
 End Function

 Function TextToClipboard (txt:String)
   If txt <> ""
     Local CPTR:Byte Ptr = GlobalAlloc(GMEM_FIXED,Len(txt)+1)
     For Local i = 0 Until Len(txt)
       CPTR[i] = txt[i]
     Next

     CPTR[Len(txt)+1]=0

     If OpenClipboard(0)
       EmptyClipboard()
       SetClipboardData (CF_TEXT,CPTR)
     CloseClipboard()
     EndIf

     If CPTR Then GlobalFree (CPTR)
   EndIf
 End Function

Mathias-Kwiatkowski

BeitragMi, Aug 17, 2016 11:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum läuft das Programm ohne Moduleinbindung obwohl ich den Timer benutze?

ganz einfach du arbeitest nicht im framework!

Werden bestimmte Module automatisch eingebunden?

jop wenn du eben nich im framework arbeitest

Ist das resetten der Farbe bei Änderung immer notwendig?

naja wenn sich farbe änern soll... solltest du diese ändern, reseten würd ich es nich nenn-.
Skype: Anarchie1984
http://projektworks.de/maxbase/
Icq - Erneuert am 21.08.2017
Yahoo - Erneuert am 21.08.2017
 

funkheld

BeitragMi, Aug 17, 2016 12:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Also muss ich mit Framework die Module alle selber einbauen die ich brauche ? Wenn nicht läuft das Programm nicht ?

Warum macht man das? Wem nütz dieses Framework?

Danke.
Gruss

BladeRunner

Moderator

BeitragMi, Aug 17, 2016 12:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit Framework verkleinerst Du deine fertigen Compilate, da nur noch eingebunden wird was benötigt ist.
Ohne Framework bindet BMax alles ein was in den PUB und BRL- Ordnern liegt.
Nötig ist Framework also nicht zwangsläufig, es sorgt nur für schlanke .exen.

Farbe "resetten": Es ist kein Reset, sondern BMax übernimmt jedes Setcolor solange bis Du ein anderes setzt. Daher ist es guter Stil solche Farbänderungen zu kapseln, sprich, wenn Du innerhalb einer Funktion die Farbe änderst am ende wieder die vorgher genutzte wiederherzustellen.
Wie du ja selbst schon festgestellt hast kann das sonst Sideeffects auslösen die zumindest bei größeren Codes schwer zu eliminieren sind.

Bei nahezu allen Programmiersprachen ist die Reihenfolge der Statements essentiell, nur bei Hardware Definitionen wie VHDL gibt es "parallele" Instruktionen, da hier kein Verlauf sondern ein Zustand abgebildet wird.
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

Mathias-Kwiatkowski

BeitragMi, Aug 17, 2016 13:17
Antworten mit Zitat
Benutzer-Profile anzeigen
noch ein kleiner tipp so ganz am rande... ( BlitzMax ) ist absolut nicht PureBasic, es ist schöner ( aber das ist ansichtsache ) BM läuft anders als eben PB aber wenn du PB doch kannst, wovon ich ausgehe weil du letzendlich immer PB bsp bringst stelle ich mir ernsthaft die frage warum lernst du BM? da PB nahezu die gleichen möglichkeiten beiet., nur dort muss man zwanghaft im framework arbeiten. jedenfalls habe ich es nie ander gesehn (aber ich kann auch nicht PB programmieren)

du stellst viele fragen was nicht schlimm ist, aber wenn du uns genau sagen würdest worauf du hinauswillst, also was dein programm können soll und wo da deine lücken sind dann könnten wir ggf. wirklich helfen.

angeboten habe ich dir auch für direkt fragen ein chat deiner wahl. wo man eben mal kurz etwas beschreiben kann oder ein kl. bsp code senden könnte.

( versuch doch erst mal mit der BlitzMax substanz klar zu kommen und nich gleich netzwerk... ) auch ich habe zahlreiche fragen hier im forum stehen wo es um netzwerk geht. da findest du sicher viele anfänger fragen die sich jeder anfänger in BM stellt.

und nochmals man programmiert kein MMO über php & mysql ... das geht alles viel einfacher.

noch ein kleiner tipp benutz immer -> SuperStrict <- damit du jedes label ddeclarierst , in PB macht man es auch nur komplett anders meines empfinden nach als in BM.
Skype: Anarchie1984
http://projektworks.de/maxbase/
Icq - Erneuert am 21.08.2017
Yahoo - Erneuert am 21.08.2017
 

funkheld

BeitragMi, Aug 17, 2016 14:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Weil ich Pensionär bin und Zeit und Lust habe etwas neues auszuprobieren.... Very Happy
Wenn du irgendwann mal Rentner bist dann siehst du alles nicht so eng... Very Happy

Zeit ist mein Hobby....

In VHDL programmiere ich auch Beschreibungen. Habe 2 Boards mit Zusatzplatinen zum probieren.
Geht erst im Herbst/Winter wieder los , wenn man nicht so oft raus geht zum Wandern/Fahrradfahren usw.

Gruss
  • Zuletzt bearbeitet von funkheld am Mi, Aug 17, 2016 14:30, insgesamt 2-mal bearbeitet

Mathias-Kwiatkowski

BeitragMi, Aug 17, 2016 14:29
Antworten mit Zitat
Benutzer-Profile anzeigen
nur kannst du einfach nich sagen was du erreichen willst mit deinem programm.

und du kannst nicht sagen wo deine lücken liegen. da wirds schwer.
Skype: Anarchie1984
http://projektworks.de/maxbase/
Icq - Erneuert am 21.08.2017
Yahoo - Erneuert am 21.08.2017

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group