• Anmelden

1

Dienstag, 8. August 2006, 21:44

Mal ne kleine RGSS Frage, ich mach es auch ganz kurz:

Kann man mit RGSS irgendwie alle Dateien ein Ordners ausgeben lassen? Also das man ein Verzeichnis angibt und man alle Dateien aus diesem Verzeichnis erhält. Ich hab in der Hilfe nach File gekuckt, aber da gibt es irgendwie nicht die passende Funktion. Kann mir bitte jemand helfen?

~Monsta~

Emi

Schlitzohr

Motto: router rip!

  • Nachricht senden

2

Dienstag, 8. August 2006, 22:11

nun, ich hab zwar keinen plan, ob dir das etwas hilft, aber du kannst mit system("tree"); alle unterordner ausgeben... dabei wird allerdings eine neues Fenster geöffnet.

nun ja, villeicht hats dir ja was genützt^^

MFG Emixp

3

Mittwoch, 9. August 2006, 00:54

Ordner sind keine Files, sondern Dirs, wie ich gerade gelernt habe
-->http://www.rubyforen.de/viewtopic.php?t=2618
Spoiler: Das neue RGSS Preisrätsel
Wie lassen sich die Werte zweier Integervariablen vertauschen? Machen Sie mit und gewinnen Sie Ruhm und Ehre! ?"Caesar"? Die kürzeste Lösung gewinnt. Gibt es mehrere richtige Einsendungen, wird ein zufälliger Gewinner aus diesen gezogen.
zum Lesen den Text mit der Maus markieren
Spoiler: Auflösung der letzten Runde
Die Aufgabe der letzten Runde lautete:

Zitat

Schreiben Sie einen Parser für die ASCII-Form des Dateiformats PBM (Portable Bitmap). Die Methode soll als Parameter einen Dateinamen erhalten und eine Bitmap zurückgeben. 0 ist weiß, 1 ist schwarz. Eine Beispieldatei, die den Buchstaben 'A' darstellti:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
P1
9 9
000010000
000010000
000101000
000101000
001000100
001111100
001000100
010000010
111000111
Es hat keiner teilgenommen, daher gibt es keinen Gewinner ^^ Eine mögliche Lösung wäre gewesen:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def parse_pbm(filename)
  f = File.open(filename)
  return nil unless f.readline.chomp == "P1"
  width, height = f.readline.split(' ').collect {|i| i.to_i}
  bitmap = Bitmap.new(width, height)
  c0 = Color.new(255, 255, 255)
  c1 = Color.new(0, 0, 0)
  for iy in 0...height
    f.readline.chomp.split('').each_with_index do |v, k|
      bitmap.set_pixel(k, iy, v == '0' ? c0 : c1)
    end
  end
  return bitmap
end
zum Lesen den Text mit der Maus markieren
Spoiler: Schon gewusst?
...wie man zum Testen schnell einzelne Scripts "ausbaut", ohne das Script aus dem Scripeditor zu löschen? Ganz einfach: Man fügt im Scripteditor ganz oben im Script die folgende Zeile ein:

Quellcode

1
if false
und ganz unten als letzte Zeile:

Quellcode

1
end
Das hat den gleichen Effekt, wie wenn man das ganze Script aus dem Scripteditor gelöscht hätte.
zum Lesen den Text mit der Maus markieren

4

Mittwoch, 9. August 2006, 09:40

Hier, der Code ist zwar dazu da um nur bestimmte Dateitypen aus einem Verzeichnis auszulesen, kannste aber sicherlich ganz einfach erweiter.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
module DB
  #--------------------------------------------------------------------------
  def self.dirp(wahl=".",wert=".rxdata")
    @rxdata = []
    @png = []
    @profil = []
    @sound = []
    @ini = []
    @rest = []
    return [] if File.exist?(wahl) == false
    dirp = Dir.open(wahl)
    for f in dirp
      case f
      when /^\./, /~$/, /\.o/
        # Wenn die zeichen drin sind nichts ausgeben.
      when /Profil.rxdata/
        @profil[@profil.size] = f
        @profil[@profil.size-1].gsub!(/-Profil.rxdata/) { "" }
      when /.rxdata/
        @rxdata[@rxdata.size] = f
        @rxdata[@rxdata.size-1].gsub!(/.rxdata/) { "" }
      when /.png/
        @png[@png.size] = f
        @png[@png.size-1].gsub!(/.png/) { "" }
      when /.ini/
        @ini[@ini.size] = f
        @ini[@ini.size-1].gsub!(/.ini/) { "" }
      when /.bmp/
        @png[@png.size] = f
        @png[@png.size-1].gsub!(/.bmp/) { "" }
      when /.jpg/
        @png[@png.size] = f
        @png[@png.size-1].gsub!(/.jpg/) { "" }
      when /.jpeg/
        @png[@png.size] = f
        @png[@png.size-1].gsub!(/.jpeg/) { "" }
      when /.wav/
        @sound[@sound.size] = f
        @sound[@sound.size-1].gsub!(/.wav/) { "" }
      when /.mid/
        @sound[@sound.size] = f
        @sound[@sound.size-1].gsub!(/.mid/) { "" }
      when /.midi/
        @sound[@sound.size] = f
        @sound[@sound.size-1].gsub!(/.midi/) { "" }
      when /.wmv/
        @sound[@sound.size] = f
        @sound[@sound.size-1].gsub!(/.wmv/) { "" }
      when /.ogg/
        @sound[@sound.size] = f
        @sound[@sound.size-1].gsub!(/.ogg/) { "" }
      when /.mp3/
        @sound[@sound.size] = f
        @sound[@sound.size-1].gsub!(/.mp3/) { "" }
      else
        @rest[@rest.size] = f
      end
    end
    case wert
    when ".rxdata"
      return @rxdata
    when ".ini"
      return @ini
    when "rest"
      return @rest
    when "grafik"
      return @png
    when "-Profil.rxdata"
      return @profil
    when "sound"
      return @sound
    else
      return []
    end
  end
end


Der Code stammt aus Chesudia, weswegen dort auch das Profil vorkommt, naja und aufruf ist halt

DB.dirp(Verzeichnis,".rxdata"|".ini"|"rest"|"grafik"|"-Profil.rxdata"|"sound") #und der gibt dann ein Array zurück.

Und das ganze noch auf Scientia
http://www.scientia.rpgxp.de/wiki/index.php/Dir
(ich weiß, die Methode hat noch vielmehr Funktionen)

Ave Abt
:information: YAams
:rainbow: Random Signatur
Bild





Weitere Informationen | Download
Mit Support für RGSS Project 1!
Bild

5

Mittwoch, 9. August 2006, 17:52

Danke an euch alle!
Funktioniert genau so wie ich mir das gedacht habe.
Habe jetzt diesen Code genommen, der erschien mir am einfachsten:

Quellcode

1
Dir.entries('.').map {|e| e unless FileTest.directory?(e)}.compact


Monsta

Social Bookmarks