StdOut to StdErr
- NicTheQuick
- Ein Admin
- Beiträge: 8675
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
- Kontaktdaten:
Re: StdOut to StdErr
Vorsicht! "MemorySize()" funktioniert nur mit Speicherbereichen, die du mit "AllocateMemory()" alloziert hast, nicht mit beliebigen Pointern.
Re: StdOut to StdErr
Ach ja!
Was ist den nun eigentlich wirklich besser?
Zeichenketten im Stack-Speicher?
Zeiger global anlegen und Speicher dann reserviern und mit einer Befreiungsfunktion wieder freigeben.
Also das Ganze im Heap-Speicher handeln.
Reallocate wäre damit ja möglich.
Die Zeiger sollten doch als Funktionsparameter von der Funktion beim beenden freigegeben werden.
Was ist den nun eigentlich wirklich besser?
Zeichenketten im Stack-Speicher?
Zeiger global anlegen und Speicher dann reserviern und mit einer Befreiungsfunktion wieder freigeben.
Also das Ganze im Heap-Speicher handeln.
Reallocate wäre damit ja möglich.
Die Zeiger sollten doch als Funktionsparameter von der Funktion beim beenden freigegeben werden.
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat
- NicTheQuick
- Ein Admin
- Beiträge: 8675
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
- Kontaktdaten:
Re: StdOut to StdErr
Prinzipiell gibt es diese Möglichkeiten, wenn es dir um eine feste Speichergröße geht. Sobald es dynamisch wird, brauchst du aber immer entweder Dim oder AllocateMemory:
Code: Alles auswählen
#size = 100
Procedure temp_heap()
Protected *mem = AllocateMemory(#size)
PokeS(*mem, "Hello World")
Debug PeekS(*mem)
FreeMemory(*mem)
EndProcedure
Structure temp_mem
b.b[#size]
EndStructure
Global _global_mem.temp_mem
Procedure temp_global()
Debug "Old value: " + PeekS(_global_mem)
PokeS(_global_mem, "Hello World")
Debug PeekS(_global_mem)
EndProcedure
Procedure temp_stack()
Protected mem.temp_mem
PokeS(mem, "Hello World")
Debug PeekS(mem)
EndProcedure
Procedure temp_static()
Static mem.temp_mem
Debug "Old value: " + PeekS(mem)
PokeS(mem, "Hello World")
Debug PeekS(mem)
EndProcedure
Threaded _threadsafe_mem.temp_mem
Procedure temp_threadsafe()
Debug "Old value: " + PeekS(_threadsafe_mem)
PokeS(_threadsafe_mem, "Hello World")
Debug PeekS(_threadsafe_mem)
EndProcedure
Debug "## temp_heap"
temp_heap()
Debug ""
Debug "## temp_global"
temp_global()
temp_global()
Debug ""
Debug "## temp_stack"
temp_stack()
Debug ""
Debug "## temp_static"
temp_static()
temp_static()
Debug ""
Debug "## temp_threadsafe"
temp_threadsafe()
temp_threadsafe()
Re: StdOut to StdErr
Schöne Zusammenstellung!
Geht das so:
,oder müsste ich einige Dinge anders machen?
Geht das so:
Code: Alles auswählen
Procedure.s Termi_inputbox(*this.termi_t, title.s, text.s, height.i, width.i, init.s="", options.s="")
Protected exit.s, prog.i
Protected *pstr, *modus
Protected *pout.character, plen.i
*pstr = UTF8(#DIALOG + " " + UnescapeString(options) + ~" --clear --title \"" + title + ~"\" --inputbox \"" + text + ~"\" " + Str(height) + " " + Str(width) + " " + UnescapeString(init) + " 3>&1 1>&2 2>&3")
*modus = UTF8("r")
If *this\run
prog = popen_(*pstr, *modus)
If( prog <> #Null )
getline_(@*pout, @plen, prog)
EndIf
pclose_(prog)
exit = PeekS(*pout, #PB_Any, #PB_UTF8)
FreeMemory(*pstr):FreeMemory(*modus)
ProcedureReturn exit
Else
ProcedureReturn "-1"
EndIf
EndProcedure
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat