Variabel Namen zusammensetzen aus String + Integer

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

obilaner

Betreff: Variabel Namen zusammensetzen aus String + Integer

BeitragFr, Mai 05, 2017 17:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo.
Ich würde gerne lernen wie ich fortlaufend ansteigende Dateinamen, für einen Stapel Bilder ansprechen kann.

Beispiel: Bild1-Bild10.jpg

Für den Versuch habe ich versucht auf etwas primitive weise einen String und eine Integer zusammenzusetzen um daraus eine Variabelbezeichnung zu machen um dann nachher irgendwas mit Arrays und For-Next herumzuexperimentieren.

Beispiel wie es nicht funktioniert:

user posted image

Das Endergebniss soll eine if Abfrage sein, die je nach Mausposition einer Variabel die der Dateinumerierung entspricht in einem Array einen zugehörigen bool wert auf true schaltet. Die Button zeichnen funktion soll dann per if abfrage das jeweilige Bild ersetzen durch das Bild mit dem gedrückten Knopf. Sorry bin absoluter Einsteiger und ziemlich verwirrt.

user posted image

Xeres

Moderator

BeitragFr, Mai 05, 2017 19:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst Variablennamen nicht zur Laufzeit generieren.
Erzeuge ein Array mit Dim, dann kannst du die Einträge mit einer Variable ansprechen.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Midimaster

BeitragSa, Mai 06, 2017 8:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst Strings aus Text und Zahlen erzeugen, indem Du einfach eine Variable mit dem Text kombinierst:
BlitzBasic: [AUSKLAPPEN]
For i=1 To 9
Kombiniert$="Bild" + i +".jpg"
Print "Dateiname= " + Kombiniert
Next



Willst Du die vielen Bilder jeweils in eine eigene Variabe speichern macht man das mit einem Array:
BlitzBasic: [AUSKLAPPEN]
Dim Bild(10)
For i=1 To 9
Kombiniert$="Bild" + i +".jpg"
Print "Dateiname= " + Kombiniert
Bild(i)=LoadImage(Kombiniert)
Next


Du kannst Die Bilder gemeinsam verarbeiten:
BlitzBasic: [AUSKLAPPEN]
Function ScaleImages()
For i=1 To 9
ScaleImage Bild(i), scaleX, scaleY
Next



...oder einzeln:
BlitzBasic: [AUSKLAPPEN]
    DrawImage Bild(1), 100,100
DrawImage Bild(2), 100,200

Xeres

Moderator

BeitragSa, Mai 06, 2017 9:59
Antworten mit Zitat
Benutzer-Profile anzeigen
~VERSCHOBEN~
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Dottakopf

BeitragFr, Mai 19, 2017 12:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Nach 3 Sekunden hinsehen würde ich fast sagen du benötigst hierfür types....


hier:
https://www.blitzforum.de/foru...hp?t=38124

hier:
https://www.blitzforum.de/foru...hp?t=33551

oh ich habe ja auch mal etwas dazu geschrieben.. Von Dummys zu Dummys
https://www.blitzforum.de/foru...hp?t=25321
Rechtschreibfehler gelten der allgemeinen Belustigung!

Spark Fountain

BeitragFr, Mai 19, 2017 13:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Es kommt drauf an, wie viele Bilder du während der Programmausführung erstellen willst.

Variante 1: Du weißt von vornherein genau, wie viele Bilder es sein sollen (z. B. 10 Stück). Dann eignet sich ein Array (dim).

Variante 2: Du weißt nicht genau, wie viele Bilder während der Laufzeit (also während dein Programm läuft) erzeugt werden müssen. Dann solltest du dir ein Type-Tutorial anschauen.

Viel Erfolg!
Gewinner der MiniBCC's #11, #13 und #28

Mathias-Kwiatkowski

BeitragFr, Mai 19, 2017 17:48
Antworten mit Zitat
Benutzer-Profile anzeigen
hi, ich mache es eig immer so das ich nie alle bilder laden lasse, sondern wenn diese benötigt werden,
hat vor und nachteile, unter bmax gehts auch wesentlich schneller als unter bb

aber hier geb ich dir mal ein bsp. von meiner seite
http://projektworks.de/maxbase...amp;gid=21


Code: [AUSKLAPPEN]
;######################################
;
;   TImage einfach einfügen im prog
;
;######################################
Global ImageToDraw%
Type TImage
   Field Img
   Field Width#,Height#,Url$,Count%,Size#,Exist%
End Type

Function ImageLoad.TImage (Url$,Width%=-1,Height%=-1,Count%=0)
   Local Img.TImage=New TImage
   Img\Width=Width
   Img\Height=Height
   Img\Count=Count
   Img\Url=Url
   Img\Size=FileSize(Url)
   If Img\Size>0 Then Img\Exist=1
   Return Img   
End Function

Function ImageExist(Image.TImage)
   If Image\Exist=1
      If Image\Img=False Then GetImage (Image)
      Return Image\Exist
   EndIf
   Return 0
End Function

Function GetImage(Image.TImage)
   If Image\Exist=1
      If Image\Img=False Then
         If Image\Width=-1 And Image\Height=-1 And Image\Count=0 Then
            Image\Img=LoadImage(Image\Url)
         Else
            Image\Img=LoadAnimImage(Image\Url,Image\Width,Image\Height,0,Image\Count)
         EndIf
      EndIf
   EndIf
End Function

Function ImageDraw(Image.TImage,X%,Y%,Tile%=0,DisableCheckSum%=0)
   If ImageExist(Image)=1 Then
      If DisableCheckSum=1 Or X>-1 And Y>-1 And X+ImageWidth(Image\Img) < GraphicsWidth() + 1 And Y+ImageHeight(Image\Img) < GraphicsHeight() + 1 Then
         DrawImage (Image\Img,X,Y,Tile)
         ImageToDraw=ImageToDraw+1
      Endif
   EndIf
End Function

Function ImageScale(Image.TImage,Width%,Height%)
   If ImageExist(Image)=1 Then
      ResizeImage Image\Img,Width,Height
   EndIf
End Function

Function GetDrawImage%()
   Local A%=ImageToDraw
   ImageToDraw=0
   Return A
End Function

Function ImageW%(Image.TImage)
   If ImageExist(Image)=1 Then
      Return ImageWidth(Image\Img)
   EndIf
End Function

Function ImageH%(Image.TImage)
   If ImageExist(Image)=1 Then
      Return ImageHeight(Image\Img)
   EndIf
End Function


example
Code: [AUSKLAPPEN]
Graphics 800,600,32,2
Local BG.TImage= ImageLoad ("Space.jpg")
ImageScale(BG, 800,600)
Local Maus.TImage=ImageLoad("Maus.png")

Repeat
   ImageDraw BG,0,0

   ImageDraw Maus,MouseX(),MouseY()
   Flip
   Cls
Until KeyDown(1)


bei imagedraw wird geprüft ob image vorhanden ist ect wenn ja wirds "gemalt"

somit hast du es im typ und naja, falls es nicht hilft, ignorier es Smile
Skype: Anarchie1984
http://projektworks.de/maxbase/
Icq - Erneuert am 21.08.2017
Yahoo - Erneuert am 21.08.2017

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group