Seite 1 von 1

[PB 4 F] Prototype & Strings (erledigt)

Verfasst: 10.05.2006 17:50
von edel
Morgen.

Wenn ich eine Funktion aufrufe und in diesem Aufruf einen String an einen
anderen haenge (Beispiel weiter unten) bekomme ich folgende Ausgabe :

[quote]
C:\Programme\PureBasic\Catalogs\
C:\Programme\PureBasic\Catalogs\Deutsch\
US1ÀPPPPP‹T$

Verfasst: 10.05.2006 18:07
von real
Wieso schreibst Du da

Code: Alles auswählen

*this\...
Lass das einfach weg und schreib

Code: Alles auswählen

ExamineDir(Path + Dir)
und dann klappt's auch!

PB ist keine objektorientierte Programmiersprache. Also brauchst Du kein Objekt mit anzugeben, wenn Du eine Prozedur (und KEINE Methode) aufrufst.

Code: Alles auswählen

Procedure ExamineDir(Path.s) 
  Static OFFSET 
  If Not Right(Path,1) = "\" : Path + "\" : EndIf 
  hDir = ExamineDirectory(#PB_Any,Path,"*.*") 
  If hDir 
    While NextDirectoryEntry(hDir) 
      If DirectoryEntryType(hDir) = #PB_DirectoryEntry_Directory 
        Dir.s = DirectoryEntryName(hDir) 
        If Dir = "." Or Dir = ".." : Continue : EndIf 
        Debug Space(offset)+Path+Dir 
        OFFSET + 5 
        ExamineDir(Path+Dir)
        OFFSET - 5 
      EndIf
    Wend 
  EndIf 
EndProcedure 

ExamineDir(#PB_Compiler_Home)

Verfasst: 10.05.2006 18:10
von edel
Es ist doch voellig egal ob ich ExamineDir mit this oder ohne aufrufe, der
Sprung bleibt der gleiche, oder habe ich da etwas falsch verstanden ?

Verfasst: 10.05.2006 18:26
von mk-soft

Verfasst: 10.05.2006 18:58
von edel
Danke , aber auf ein "Interface" moechte ich verzichten.

Verfasst: 10.05.2006 23:09
von edel
Hab ein .s bei prototyp vergessen ...

Verfasst: 10.05.2006 23:13
von Hellhound66
@hallodri: Läuft das mit EBP eigentlich noch mit der 4.0 Final?

Verfasst: 10.05.2006 23:24
von edel

Code: Alles auswählen

PROTOTYPE.s ExamineDir(Path.s)

STRUCTURE TEST
  ExamineDir.ExamineDir
ENDSTRUCTURE

PROCEDURE.s ExamineDir(Path.s) 
  PROTECTED *this.TEST 
  !mov [p.p_this],ebp 
  STATIC OFFSET 
  IF NOT Right(Path,1) = "\"
    Path + "\"
  ENDIF 
  hDir = ExamineDirectory(#PB_ANY,Path,"*.*") 
  IF hDir 
    WHILE NextDirectoryEntry(hDir) 
      IF DirectoryEntryType(hDir) = #PB_DirectoryEntry_Directory 
        Dir.s = DirectoryEntryName(hDir) 
        IF Dir = "." OR Dir = ".." : CONTINUE : ENDIF 
        NewPath.s = Path + Dir + "\"
        DEBUG space(offset) + NewPath 
        OFFSET + 5
        *this\ExamineDir(NewPath)
        OFFSET - 5
      ELSE
        ;debug Space(OFFSET) + DirectoryEntryName(hDir)
      ENDIF 
    WEND 
  ENDIF 
ENDPROCEDURE

PROCEDURE NEW()
  PROTECTED *THIS.TEST = AllocateMemory(4)
  *THIS\ExamineDir = @ExamineDir()
  PROCEDURERETURN *THIS
ENDPROCEDURE

*a.TEST = new()
*a\ExamineDir("c:\")

Und nein , ich moechte immer noch kein Interface ;-)

Verfasst: 10.05.2006 23:31
von Hellhound66
Schade, ich hätte sonst deinen Präcompiler benutzt.