Seite 2 von 2

Verfasst: 02.12.2006 18:46
von funk.munich
Hi Thomas,

es klappt jetzt :D Vielen Dank.

:: Datei, die den Block anzeigen soll, z.B. readString.{pb, exe}

Code: Alles auswählen

fname$ = "readString.exe"
fsize.l = FileSize(fname$)

If ReadFile(0,fname$) 
  FileSeek(fsize - 4)
  byte = ReadLong()
  FileSeek(fsize - 4 - byte)
  msg.s = ReadString()
  MessageRequester("", Left(msg, Len(msg) - Len(Str(byte)) + 1))
  CloseFile(0)
EndIf
:: Datei, die den String in die Exe schreiben soll, z.B. writeString.{pb, exe}

Code: Alles auswählen

fname$ = "readString.exe"
string$ = "Hallo Welt!"
fsize.l = FileSize(fname$)

If OpenFile(0, fname$) 
  FileSeek(fsize) 
  WriteString(string$)
  WriteLong(Len(string$))
  CloseFile(0) 
EndIf
Jetzt hätte ich nur noch eine Frage, wie ich platformunabhängig
den eigenen Dateinamen einlesen kann.
Hättest Du hierzu auch noch eine Idee?

Unter windows kann ich ja mit dem Api Call:

GetModuleFileName_(GetModuleHandle_(0), @sApp, 256)

den Dateinamen auslesen.

Gibt es für Linux/Mac auch so ein Call?

Vielen Dank für die Hilfe,
Daniel

Verfasst: 02.12.2006 19:01
von mk-soft
Umsteigen auf PB 4 und "Ergebnis$ = ProgramFilename()"

FF :wink:

Verfasst: 03.12.2006 19:55
von funk.munich
Hi,

ich möchte jedoch für dieses Projekt PB3.9 nehmen, da es diese Version
für Win, Linux + Mac gibt. PB4 gibt es ja zur Zeit für Win und Linux ist ja in der Beta Phase.

Also wäre super, wenn jemand mir hierzu weiterhelfen könnte, auch wenn ich es mit PB3.9 mache :wink:

Gruß,
Daniel

Verfasst: 04.12.2006 17:09
von funk.munich
Hi zusammen,

habe für meine Frage eine Lösung gefunden:

Windows:

Code: Alles auswählen

Procedure.s GetExeName() 

  sApp.s=Space(256) 
  GetModuleFileName_(GetModuleHandle_(0), @sApp, 256) 
  
  ProcedureReturn sApp 
  
EndProcedure 
Linux:

Code: Alles auswählen

Procedure.s GetExeName() 

  lngBuffer = AllocateMemory(2048 + 1) 
  lngLen = Readlink_("/proc/" + Str(getpid_()) + "/exe", lngBuffer, 2048) 
  strOut = GetFilePart(PeekS(lngBuffer, lngLen)) 
  
  ProcedureReturn strOut
  
EndProcedure 
Gruß,
Daniel

(Für PB 3.9)