Problem: Funktion will nichts anzeigen

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Xaymar

ehemals "Cgamer"

Betreff: Problem: Funktion will nichts anzeigen

BeitragSa, Apr 12, 2008 11:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Tja, schon wieder ich...
Ich versuche seit ca 3h die Funktion wieder etwas anzeigen zu lassen, aber vergebens...

Kann mir jemand helfen? Ich pack hier einen DL-Link für Source+Files rein

MfG
CGamer

http://cgamer.cg.funpic.de/EG.rar

[Edit]:
Sry upload abgeschmiert, Link falsch...
Warbseite
  • Zuletzt bearbeitet von Xaymar am Sa, Apr 12, 2008 12:02, insgesamt einmal bearbeitet

ZaP

BeitragSa, Apr 12, 2008 12:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Und welche Funktion meinst du? Ich hab nach 1 min durchlesen bereits 3 Funktionen Gefunden, die nichts "anzeigen".
Starfare: Worklog, Website (download)

Xaymar

ehemals "Cgamer"

BeitragSa, Apr 12, 2008 12:06
Antworten mit Zitat
Benutzer-Profile anzeigen
die funktion Draw_Lists()
Warbseite

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, Apr 12, 2008 12:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Soll innerhalb einer Funktion etwas angezeigt werden alá DrawImage etc., so muss das Imagehandle zuvor ql:Global deffiniert sein.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Xaymar

ehemals "Cgamer"

BeitragSa, Apr 12, 2008 12:47
Antworten mit Zitat
Benutzer-Profile anzeigen
ich arbeite mit Types und Globals...(Durchlesen ist sinnvoll!)

vielleicht liegst an den vars

In der Funktion liegt der Fehler da C immer 0 ist...
Code: [AUSKLAPPEN]
Function Draw_Lists()
   For L.List = Each List
      SetBuffer ImageBuffer(L\IMG)
      Color 0,0,0:Rect 0,0,L\W,L\H
      C=0
      For LE.LEntry = Each LEntry
         If LE\TID = L\ID
            If LE\S = 1
               Color 153,153,153:Rect 0,-L\Y2+(16*C),L\W-15,16
            EndIf
            If -L\Y2+(16*C)>=0 And -L\Y2+(16*C)<L\H
               If CheckMouse(L\X,L\Y-L\Y2+(16*C),L\X+L\W-15,L\Y-L\Y2+(16*C)+16)=1
                  Color 255,255,255:Rect 0,-L\Y2+(16*C),L\W-15,16,0
               ElseIf CheckMouse(L\X,L\Y-L\Y2+(16*C),L\X+L\W-15,(L\Y-L\Y2)+((16*C)+16))=2
                  For LE2.LEntry2 = Each LEntry2
                     If LE2\ID = LE\ID
                        LE2\S = 1
                     EndIf
                  Next
               EndIf
            EndIf
            Color 255,255,255:Text 0,-L\Y2+(16*C),LE\T$
            C=C+1
         EndIf
      Next
      
      If CheckMouse(L\X+L\W-15,L\Y,L\X+L\W,L\Y+15)=2
         DrawImage LAU2,L\W-15,0
         L\Y2=L\Y2-3
      Else
         DrawImage LAU,L\W-15,0
      EndIf
      If CheckMouse(L\X+L\W-15,L\Y+L\H-15,L\X+L\W,L\Y+L\H)=2
         DrawImage LAD2,L\W-15,L\H-15
         L\Y2=L\Y2+3
      Else
         DrawImage LAD,L\W-15,L\H-15
      EndIf
      
      DrawImage LT,L\W-15,15
      For Y2 = 30 To (L\H-30) Step 15
         DrawImage LM,L\W-15,Y2
      Next
      DrawImage LB,L\W-15,L\H-30
      
      Y=C*16-L\H
      If L\Y2>Y L\Y2=Y
      If L\Y2<0 L\Y2=0
      
      If C=0 And Y<=0
         DrawImage LAU2,L\W-15,0
         DrawImage LAD2,L\W-15,L\H-15
         SetBuffer BackBuffer()
         Return 0
      ElseIf C<>0 And Y<=0
         Y=0
      ElseIf C=0
         DrawImage LAU2,L\W-15,0
         DrawImage LAD2,L\W-15,L\H-15
         SetBuffer BackBuffer()
         Return 0
      Else
         If CheckMouse(L\X+L\W-15,L\Y+22,L\X+L\W,L\Y+L\H-22)=2
            val=MY-(L\Y+22)
            Tmp2=L\H-45
            Tmp3#=val/Float(Tmp2)
            L\Y2=Y*Tmp3#
         EndIf
         Tmp0=L\H-45
         If Y>0
            Tmp1#=L\Y2/Float(Y)
         Else
            Tmp1#=0
         EndIf
         DrawImage LD,L\W-15,15+(Tmp0*Tmp1)
      EndIf
      
      SetBuffer BackBuffer()
      Border(L\X,L\Y,L\W,L\H)
      DrawImage L\IMG,L\X,L\Y
   Next
End Function
Warbseite
  • Zuletzt bearbeitet von Xaymar am Sa, Apr 12, 2008 13:04, insgesamt einmal bearbeitet

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, Apr 12, 2008 13:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Durchgelesen habe ich, aber nichts von Global finden können. Selbst die Textsuche hat als erstes mein Beitrag gefunden. Wenn du aber dein Download meinst, so habe ich diesen nicht getestet.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Xaymar

ehemals "Cgamer"

BeitragSa, Apr 12, 2008 13:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Ein post über hectic habe ich geschrieben dass der fehler in der variable C ist

[edit]
oder variable Y
Warbseite

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, Apr 12, 2008 13:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn C immer =0 ist, dann trifft If LE\TID = L\ID Then nie zu...

Eventuell hast du die IDs nicht doppelt vergeben zwischen den beiden Types.


edit1: Ausserdem ist die erste Zuweisung für Y mit Y=C*16-L\H gegeben. Danach ergibt es keinen Sinn auf If C=0 And Y<=0 Then zu prüfen. Da kannst auch genauso gut auf If C=0 Then prüfen.

edit2: Ich würde generell versuchen, nicht mit so vielen Variablen rum zu jonglieren. Das bringt dann doch erheblich größeren Überblick des ganzen.

edit3: Sorry zu edit1, meine Aussage stimmt nicht ganz. Sehr verwoben das ganze.
  • Zuletzt bearbeitet von hectic am Sa, Apr 12, 2008 13:20, insgesamt einmal bearbeitet

Xaymar

ehemals "Cgamer"

BeitragSa, Apr 12, 2008 13:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Ausserdem ist die erste Zuweisung für Y mit Y=C*16-L\H gegeben. Danach ergibt es keinen Sinn auf If C=0 And Y<=0 Then zu prüfen. Da kannst auch genauso gut auf If C=0 Then prüfen

-->Ohne will er nicht...

Zitat:
Eventuell hast du die IDs nicht doppelt vergeben zwischen den beiden Types

Code: [AUSKLAPPEN]
Type List
   Field X,Y,W,H,Y2
   Field ID,IMG
End Type
Type LEntry
   Field T$,ID
   Field TID,S
End Type
Type LEntry2
   Field ID,S,TID
End Type

Code: [AUSKLAPPEN]
Function Add_List(TID,Name$)
   LE.LEntry = New LEntry
   LE\ID=LEntry_Count
   LE\T$=Name$
   LE\TID=TID
   LE2.LEntry2 = New LEntry2
   LE2\ID=LE\ID
   LE2\TID=LE\TID
   LE2\S=0
   LEntry_Count=LEntry_Count+1
   Return LE\ID
End Function


[edit]
Bevor ich GetState_CB() hinzugefügt hatte gings noch...
Code: [AUSKLAPPEN]
Function GetState_CB(ID)
   For CB.CheckBox = Each Checkbox
      If CB\ID = ID
         Return CB\State
      EndIf
   Next
   Return 0
End Function
Warbseite

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, Apr 12, 2008 13:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Habe mir nun die RAR runter geladen und komme leider nicht dahinter. Es kann helfen, wenn man sich alle Typeeinträge an entscheidenden Stellen auflisten lässt (mit Locate/Print oder Text). Dadurch kann man sehen, ob eventuell benötigte Einträge wo anders wieder gelöscht oder verändert werden.

Welchen Einfluss nun GetState_CB() dabei hat, konnte ich bei ''überfliegen'' auch nicht feststellen. Diese Funktion wird nur aus einer Stelle aus dem Mainloop aufgerufen. Confused
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Xaymar

ehemals "Cgamer"

BeitragSa, Apr 12, 2008 13:56
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm kurz nach deinem post hectic habe ich herausgefunden dass er die Funktion Draw_Lists() gar nicht aufruft obwohl sie in der Mainloop steht...
wieso?

[edit]
Liegt es vielleicht daran?:
L=Create_List(widt/2-50,heig/2+20,120,80)

[edit2]
Richtiger Code:
Code: [AUSKLAPPEN]
   L=Create_List(widt/2-50,heig/2+20,120,80)
   dir=ReadDir(CurrentDir$()+"Lang\")
   Repeat
      cfile$=NextFile$(dir)
      If cfile$="" Exit
      If Left(cfile$,1) <> "."
         Add_List(L,cfile$)
      EndIf
   Forever
   CloseDir dir


Falscher Code
Code: [AUSKLAPPEN]
   L=Create_List(widt/2-50,heig/2+20,120,80)
   dir=ReadDir(CurrentDir$()+"Lang\")
   Repeat
      cfile$=NextFile$(dir)
      If cfile$="" Exit
      If Left(cfile$,1) <> "."
         Add_List(A,cfile$) ;<---------Der Fehler!!!
      EndIf
   Forever
   CloseDir dir
Warbseite

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group