Seite 1 von 2

Y=10 I Locate(10,Y+10) , trotzdem wird alles überschrieben

Verfasst: 06.02.2005 18:41
von captain third
moin,

sorry wegn dem komüschen titel,mir fiel nix ein,also mein problem
ich hab versucht mit ExamineDirectory() im openscreen() die ordner und dateien anzuzeigen,mein problem ist aber,das sich alles überschreibt...hier ist mein code

Code: Alles auswählen

Enumeration
 #Maus
EndEnumeration
InitSprite()
InitMouse()
InitKeyboard()
OpenScreen(800,600,16,"Test")
LoadSprite(#Maus,"C:\Eigene Dateien\Eigene Bilder\Maus.bmp")
Verzeichnis$=("C:\")
Y=10
Menu=1
Repeat
ExamineMouse()
ExamineKeyboard()
ClearScreen(0,0,0)
Select Menu
 Case 1
  ExamineDirectory(#PB_Any,Verzeichnis$,"*.*")
  DisplaySprite(#Maus,MouseX(),MouseY())
   FileType = NextDirectoryEntry()
   If FileType
    FileName$ = DirectoryEntryName()
     If FileType = 2 ; Directory type
      FileName$ = "(Ordner) "+FileName$  
     EndIf
   EndIf
   Repeat
    FileType = NextDirectoryEntry()
    If FileType
     FileName$ = DirectoryEntryName()
     If FileType = 2 ; Directory type
      FileName$ = "(DIR) "+FileName$  
     EndIf
     StartDrawing(ScreenOutput())
      FrontColor(128,128,128)
      DrawingMode(1)
      Locate(10,Y+10)
      DrawText(FileName$)
     StopDrawing()
    EndIf
   Until FileType = 0 
   
  EndSelect
  
  If MouseButton(2)
   quit=1
  EndIf
 FlipBuffers()
Until quit=1
End 
könnt ihr mir helfen?

Verzeichniss

Verfasst: 06.02.2005 18:57
von Hroudtwolf
Da ich weiß was du vorhast kann ich dir diesen Tip geben.

Lese das Directory aus und schreibe die Dateinamen in ein Aray.
z.B. a$(x)

Code: Alles auswählen

a$(x)=Filename$
x=x+1
x ist dann dein Grössenwert für das Verzeichniss.
Du mußt dann einen Font z.B. mit der Grösse von 10 laden.
Erstelle nun einen Sprite mit der Größe ->Anzahl der A$-Einträge mal 10.
Mit:


Code: Alles auswählen

repeat
Locate (5,z)
z=z+1
text$=a$(z)
Drawtext (text$)
until z>x
natürlich mit Drawingmode(1) füllst du nun dein Sprite mit dem Verzeichnissinhalt.

Kopiere nun dein Sprite in dein Fenstersprite.

Fertig !!!

Verfasst: 06.02.2005 19:11
von captain third
äääh,danke....nach ungefähr 3 mal lesn habschs kapiert... :mrgreen:

Sorry

Verfasst: 06.02.2005 19:17
von Hroudtwolf
tschuldigung... :mrgreen:
Kann nicht so gut Erklären .
[Ich arbeite aber dran]

Verfasst: 06.02.2005 21:52
von DrShrek
So gehts:

Code: Alles auswählen

...
Locate(10,Y) 
Y+10
...

Verfasst: 06.02.2005 22:12
von Leo
Y bleibt immer 10 und als Parameter wird immer 20 übergeben.

Verfasst: 06.02.2005 22:26
von Hroudtwolf
@IceSoft & @Leo

Interessante Theorien. Für die jenigen die eure Erklärungen verstehen.
Nur schade , daß mein Intelekt nicht ausreichend dafür ist.
Das wichtigste ist aber ,daß der Verfasser seine Nachricht
versteht.
:lol:

Verfasst: 07.02.2005 00:18
von captain third
danke euch

[Edit]
ok es funktioniert,aber jetzt kommt der große aber :mrgreen:
jetzt wird des zwar angezeigt,aber :

A: es flackert
B: kommt gleich

ich wollte nachdem des funktioniert(also jetzt) des mit sprites darstellen,das ist zwar kein problem aber,des sollte so angezeigt werden(schwierig zu formulieren) wenn die repeatschleife aufhört,dann wird das auch nicht mehr angezeigt....also wenn man das in einem komplexeren programm macht,würden die sprites auch ständig flackern,und die sprites werden jedesmal übermalt,es soll nur einmal draufgemalt werden und denn auch gleich da bleiben ohne das es sich nochmal übermalt...wie kann man des machen? ps.:des war jetzt B...irgendwo :mrgreen:

Verfasst: 07.02.2005 01:56
von Hroudtwolf
Dann musst du eine Änderungsprüfung einbauen.

Das heisst, erst wenn sich dein Inhalte ändern sollte neu gezeichnet werden.

Verfasst: 07.02.2005 02:57
von captain third
klingt intressant,und wie geht das???ich hab keine vorstellung davon wie sowas funzen soll,ich habs irgendwie versucht,rausgekommen ist aber dasda :bluescreen: und dasda :lamer: naja danach gabs erstmal :coderselixir: und jetzt frag ich hier =)