Kleine Dateien als PB Quellcode speichern

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
mpz
Beiträge: 505
Registriert: 14.06.2005 15:53
Computerausstattung: Win 11 Pro, 48 GB Ram, Intel I7 CPU und RX4070 Grafikkarte, PB (4/5) 6.12LT
Wohnort: Berlin, Tempelhof

Kleine Dateien als PB Quellcode speichern

Beitrag 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"
Working on :lol: - LibSGD - MP3D Engine - 8)
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
mpz
Beiträge: 505
Registriert: 14.06.2005 15:53
Computerausstattung: Win 11 Pro, 48 GB Ram, Intel I7 CPU und RX4070 Grafikkarte, PB (4/5) 6.12LT
Wohnort: Berlin, Tempelhof

Beitrag 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
Working on :lol: - LibSGD - MP3D Engine - 8)
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

Datensektionen sind kein Quellcode im eigentlichen Wortsinne... /:->
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
a²+b²=mc²
Benutzeravatar
mpz
Beiträge: 505
Registriert: 14.06.2005 15:53
Computerausstattung: Win 11 Pro, 48 GB Ram, Intel I7 CPU und RX4070 Grafikkarte, PB (4/5) 6.12LT
Wohnort: Berlin, Tempelhof

Beitrag 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 :? :(
Working on :lol: - LibSGD - MP3D Engine - 8)
Little John

Beitrag von Little John »

Sowas wird üblicherweise in Base64 (oder UUEncode) codiert.

Gruß, Little John
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
neotoma
Beiträge: 202
Registriert: 13.09.2004 16:16
Kontaktdaten:

Beitrag 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
Alle Rechtschreibfehler unterliegen der GPL und dürfen frei kopiert und modifiziert werden.
Antworten