Seite 3 von 3

Verfasst: 31.01.2007 19:12
von remi_meier
@Thorium: Nein.
Du darfst dir mal diese Links durchlesen:
http://www.purebasic.fr/english/viewtop ... +functions
http://www.purebasic.fr/english/viewtop ... procedures
http://www.purebasic.fr/english/viewtop ... executable

kurz: Der Compiler arbeitet zu simpel, dafür ist er schnell.

Verfasst: 31.01.2007 19:39
von ts-soft
@Dige
Hab Dir mal pseudocode wegen UTF-8 erstellt, der sollte mit der IDE und
jaPBe funktionieren.

Code: Alles auswählen

Global FileMode.l = #PB_UTF8

Procedure Read(File.s)
  Protected FF.l = ReadFile(#PB_Any, File)
  If FF
    If ReadStringFormat(FF) = #PB_Ascii : FileMode = #PB_Ascii : EndIf
    
    While Not Eof(FF)
      Debug ReadString(FF, FileMode)
    Wend
    
    CloseFile(FF)
  EndIf
EndProcedure

Procedure Write(File.s)
  Protected FF.l = CreateFile(#PB_Any, File)
  If FF
    WriteStringFormat(FF, FileMode)
    WriteStringN(FF, "Bla", FileMode)
    ; ...
    CloseFile(FF)
  EndIf
EndProcedure
Sollte man IMHO grundsätzlich so, oder ähnlich machen. Ausserdem
empfielt sich UTF-8 (Unicode in jaPBe) als Standard Speicherformat, da
dieses für Unicode und ASCII executables gleichermassen geeignet ist,
ASCII aber nicht für Unicode unbedingt empfehlenswert.

Verfasst: 31.01.2007 20:12
von dige
Hab die FileMode Erkennung mal mit eingebaut.
Danke, TS für das Beispiel ...

Verfasst: 01.02.2007 12:13
von neotoma
dige hat geschrieben:Ok, tested mal folgenden Code:

Code: Alles auswählen

Procedure NoUse1()
  txt.s = "Procedure NoUse1()"
  InitEngine3D()
EndProcedure
Procedure NoUse2()
  txt.s = "Procedure NoUse2()"
  NoUse1()
  UseJPEGImageDecoder()
EndProcedure
Procedure NoUse3()
  InitSound()
  a = $11223344
  b = $66778899
  a + b
  txt.s = "Procedure NoUse3()"
  NoUse2()
EndProcedure
Procedure InUse()
  txt.s = "Procedure InUse()"
EndProcedure
InUse()
Compiliert mit PB4.02 : 47.104 Bytes

pbAnalyzer Code:

Code: Alles auswählen

;- Created with pbAnalyzer v1.1 by DiGe
;{ Structures
;}
;{ Declares
Declare InUse (  ) 
;}
;{ Functions
Procedure InUse()
txt.s = "Procedure InUse()"
EndProcedure
InUse()
;}
Compiliert mit PB4.02 : 2.048 Bytes
Könnte es sein, das du diese größe im ersten Beispiel erreichst, indem Du den JPeg-Decoder und 3D-Lib hinzulinken läßt ?
Dann hat dies nichts mit den Prozeduren zu tun, sondern damit, wie PB ermittelt welche Libs er dazu linken muss...... (wäre auf alle fälle ein Todo für Fred !).

Ansonsten kannst Du sowas auch über CompilerIf/CompilerEndif abfangen... (hoffe ich zumindest... :) )

Mike

Verfasst: 01.02.2007 13:21
von mknjc
Ja aber der Compiler müsste doch erkennen das er die beiden garnicht hinzulinken muss da die Funktionen nicht aufgerufen werden.

Edit:
Ach und nicht das jemand kommt und das selbe sagt wie gnozal:
Another possibility is to use a user library instead of an include.

Userlib sind nicht so schön wie Includes da man den Programmfluss bei Includes durch Konstanten und CompilerIfs steuern kann.

Mfg mknjc

Verfasst: 31.07.2008 08:14
von dige
Da der PB Compiler immer noch nicht alle ungenutzten Prozeduren rausschmeisst, mein Preprozessor aber noch keine Macros unterstützt
und ich keine Lust habe das weiterzuentwickeln ...

.. viel Spaß mit dem Quellcode ( zu finden im ersten Posting ) mit der Bitte
sinnvolle Erweiterungen hier zu posten.