Seite 1 von 1

Kleine Dateien als PB Quellcode speichern

Verfasst: 28.01.2009 00:07
von mpz
Hi Leute,

mit diesem Programm kann man kleine Dateien (z.B. Grafiken) als PB Quellcode konvertieren um diese z.B. ins Forum zu stellen.

Gruß Michael

Code: Alles auswählen

;-
;- ProgrammStart
;////////////////////////////////////////////////////////////////
;//
;// Project Title: Image2PBSource
;// File Title: Image2PBSource.pb
;// Created On: 27.1.2009
;// Updated On: 
;// Author: Michael Paulwitz
;// OS:Windows
;// 
;// Erzeugt aus einer Datei ein PB Quellcode
;// 
;////////////////////////////////////////////////////////////////

Procedure OFile(file.s)
    d=ReadFile(1, file) 
    If d 

      ClearGadgetItems(3) 

      Restore StringData
      Repeat
      Read.s Purestring.s 
          AddGadgetItem(3, -1,Purestring)
      Until Purestring.s  = "End"
      
      AddGadgetItem(3, -1,"")          
      AddGadgetItem(3, -1,"DataSection")
      AddGadgetItem(3, -1,"   NameSect:")
      AddGadgetItem(3, -1,"      Data.s "+Chr(34)+file+Chr(34))
      AddGadgetItem(3, -1,"")
      AddGadgetItem(3, -1,"   Filehex:" )

      While Eof(1)=0
 
        Zaehler + 1
        Dump.s + RSet(Hex(ReadCharacter(1)), 2, "0")
        If Zaehler = 40
           Zaehler = 0
           AddGadgetItem(3, -1,"   Data.s "+Chr(34)+Dump.s+Chr(34))
           Dump.s = ""
        EndIf   
      Wend 

      If Dump.s
         AddGadgetItem(3, -1,"   Data.s "+Chr(34)+Dump.s+Chr(34))
      EndIf
      AddGadgetItem(3, -1,"   Data.s "+Chr(34)+"End"+Chr(34))
      CloseFile(1) 
    Else 
      MessageRequester("Fehler","Datei könnte nicht geöffnet werden.",#MB_ICONERROR) 
    EndIf 
EndProcedure 

Procedure SFile(file.s) 
   d=CreateFile(2, file.s)
    If d
  
      WriteString (2,GetGadgetText(3))
        
      CloseFile(2) 
      Else 
        MessageRequester("Fehler","Datei konnte nicht geschrieben werden.",#MB_ICONERROR) 
    EndIf 
EndProcedure 


If OpenWindow(0, 100, 200, 600, 260, "Image2PBSource Konverter", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget) 

ButtonGadget(1,10,20,80,25,"Öffne Datei") 
ButtonGadget(2,100,20,80,25,"Speicher Datei") 
EditorGadget(3,10,60,580,185) 


  Repeat 
    EventID.l = WaitWindowEvent() 
    If EventID = #PB_Event_CloseWindow  
      Quit = 1 
    EndIf 
    If EventID = #PB_Event_Gadget 
      Select EventGadget() 
        Case 1 
          file$ = OpenFileRequester("Öffne Datei","","Alle Dateien|*.*",1) 
          OFile(file$) 
        Case 2 
          file2$ = SaveFileRequester("Speicher Datei","","Alle Dateien|*.*",1) 
          SFile(file2$) 
      EndSelect 
    EndIf 
  Until Quit = 1 
  
EndIf 

End

DataSection

StringData:

Data.s ";// Project Title: CreateFilefromPBSource"
Data.s ";// Author: Michael Paulwitz on Jan 2009"
Data.s ""
Data.s "Procedure.l Hex2Dec(h$)"
Data.s "  h$=UCase(h$)"
Data.s "  For r=1 To Len(h$)"
Data.s "    d<<4 : a$=Mid(h$,r,1)"
Data.s "    If Asc(a$)>60"
Data.s "      d+Asc(a$)-55"
Data.s "    Else"
Data.s "      d+Asc(a$)-48"
Data.s "    EndIf"
Data.s "  Next"
Data.s "  ProcedureReturn d"
Data.s "EndProcedure"
Data.s ""
Data.s "Restore NameSect"
Data.s "Read.s File.s"
Data.s ""
Data.s "If CreateFile(0,File.s)"
Data.s "    Restore Filehex"
Data.s ""
Data.s "    Repeat"
Data.s "    Read.s Daten.s"
Data.s "        If Daten.s = "+Chr(34)+"End"+Chr(34)+" : Break : EndIf"
Data.s ""        
Data.s "        For n = 1 To Len(Daten.s) Step 2"
Data.s "             WriteByte(0,Hex2Dec(Mid(Daten.s,n,2)))"
Data.s "        Next n"   
Data.s ""        
Data.s "    ForEver"
Data.s "    CloseFile (0)"
Data.s "Else"
Data.s "  MessageRequester("+Chr(34)+"Errormessage"+Chr(34)+", "+Chr(34)+"Error: can't write the file "+Chr(34)+"+File.s, 0)"
Data.s "  End"
Data.s "EndIf"
Data.s "End"

Verfasst: 28.01.2009 00:14
von Fluid Byte

Verfasst: 28.01.2009 00:17
von ts-soft

Verfasst: 28.01.2009 00:35
von mpz
Hi,

mit dem Programm soll man nur kleine Dateien hier als PB Quelltext ins Forum reinstellen können. Habe ich benötigt um meinen Mikrocontroller Stromlaufplan zu dem USB Interface für WIN mit 4xIN/6xOUT/1xAD/1xIR und 1xTemp dazuzufügen. Es soll nicht dazu dienen eine Datei zu einer Exe dazuzufügen...

TS-Soft das kann Dein PureDataConverter natürlich viel besser (benutze ich zu diesen Zwecken auch...).

Gruß Michael

Verfasst: 28.01.2009 00:39
von Kaeru Gaman
Datensektionen sind kein Quellcode im eigentlichen Wortsinne... /:->

Verfasst: 28.01.2009 00:47
von Kiffi
was habt Ihr denn? Das Tool von Thomas ist natürlich das Deluxe-Flaggschiff.

Es ist dennoch nicht verboten, Codes mit ähnlicher Funktionalität hier
einzustellen.

@mpz: Hiermit hast Du Dir allerdings einen Bock geschossen.
Die Betonung liegt nach wie vor auf kleine Dateien ;-)

Grüße ... Kiffi

Verfasst: 28.01.2009 00:56
von mpz
Hi,

Nachdem ich meine Grafik doch nicht ins Forum stellen konnte (da natürlich zu gross) gehe ich frustriert ins Bett. Ich werde mich wohl wieder meinem 3D Programm widmen, das kann ich (hoffendlich) wenigstens...

Gruß Michael

:o :? :(

Verfasst: 28.01.2009 01:17
von Little John
Sowas wird üblicherweise in Base64 (oder UUEncode) codiert.

Gruß, Little John

Verfasst: 28.01.2009 01:17
von ts-soft
mpz hat geschrieben:TS-Soft das kann Dein PureDataConverter natürlich viel besser (benutze ich zu diesen Zwecken auch...).
Dann sind wir ja schon 2 Nutzer :mrgreen:
Dachte schon das nutzt niemand ausser mir

Wenn Du Bilder posten möchtest und keinen Space hast, dann PM mich
mal, dann geb ich Dir meine e-Mail, ich lade es auf realsource.de hoch und
sende Dir den Link :wink:

Gruß
Thomas

Verfasst: 28.01.2009 18:45
von neotoma
ts-soft hat geschrieben:
mpz hat geschrieben:TS-Soft das kann Dein PureDataConverter natürlich viel besser (benutze ich zu diesen Zwecken auch...).
Dann sind wir ja schon 2 Nutzer :mrgreen:
Dachte schon das nutzt niemand ausser mir
Moment! Ist bei als festes Tool immer dabei, und hat mir auch schon viel Arbeit erspart !

..Gewährt mir die Bitte, in eurem Bunde zu sein der dritte...
frei nach Schiller. :-)

Mike