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.
al90
Beiträge: 1103 Registriert: 06.01.2005 23:15
Kontaktdaten:
Beitrag
von al90 » 31.12.2009 17:57
Hier ein kleines Beispiel zum umwandeln ganzer Strings mit Environment-Inhalt.
Ich hoffe der eine oder andere kanns gebrauchen.
Code: Alles auswählen
Procedure.s ConvertEnvString(string$)
Protected count.i, len.i, a$, b$
Repeat
count = FindString(string$, "%", 1)
If count > 0
len = FindString(string$, "%", count+1) - count-1
If len > 0
a$ = Mid(string$, count+1, len)
If a$ <> ""
b$ = GetEnvironmentVariable(a$)
EndIf
string$ = ReplaceString(string$, "%"+a$+"%", b$, 1)
b$=""
Else
Break
EndIf
EndIf
Until count = 0
ProcedureReturn Trim(string$)
EndProcedure
strg$="Identifier: %PROCESSOR_IDENTIFIER%" + #CRLF$ + "Type: %PROCESSOR_ARCHITECTURE%" + #CRLF$ + "Number of Cores: %NUMBER_OF_PROCESSORS%" + #CRLF$ + "Revision: %PROCESSOR_REVISION%"
MessageRequester("CPU Info", ConvertEnvString(strg$), #MB_OK|#MB_ICONINFORMATION)
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 » 31.12.2009 18:12
hier noch eine reine Windows Version, ist etwas kürzer und schneller, aber
nur unter Windows zu gebrauchen, ausserdem wird die tatsächlich gebrauchte
Stringlänge nicht geprüft, ist also ggflls anzupassen.
Code: Alles auswählen
Procedure.s ConvertEnvString(string.s)
Protected lpDst.s{#MAX_PATH}
If ExpandEnvironmentStrings_(@string, @lpDst, #MAX_PATH)
ProcedureReturn lpDst
EndIf
EndProcedure
strg$="Identifier: %PROCESSOR_IDENTIFIER%" + #CRLF$ + "Type: %PROCESSOR_ARCHITECTURE%" + #CRLF$ + "Number of Cores: %NUMBER_OF_PROCESSORS%" + #CRLF$ + "Revision: %PROCESSOR_REVISION%"
MessageRequester("CPU Info", ConvertEnvString(strg$), #MB_OK|#MB_ICONINFORMATION)
Gruß
Thomas
al90
Beiträge: 1103 Registriert: 06.01.2005 23:15
Kontaktdaten:
Beitrag
von al90 » 31.12.2009 18:31
Auch nicht übel.
Wusste garnicht das es auch ne API dazu gibt.
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 » 31.12.2009 18:41
al90 hat geschrieben: Auch nicht übel.
Wusste garnicht das es auch ne API dazu gibt.
Muß man ja auch nicht
, von der "zu Fuß" Variante kann man wesentlich mehr lernen!
Axolotl
Beiträge: 290 Registriert: 31.12.2008 16:34
Beitrag
von Axolotl » 31.12.2009 20:13
Cool, hatte mir gerade selber so eine Routine gebaut....
Code: Alles auswählen
Procedure.s ExpandEnvironmentVar(Text.s)
Protected p1.l, p2.l
Protected env.s, pat.s
Repeat
p1 = FindString(Text, "%", p1+1)
If p1
p2 = FindString(Text, "%", p1+1)
If p2
pat = Mid(Text, p1+1, p2-p1-1)
If pat
env = GetEnvironmentVariable(pat)
If env
Text = ReplaceString(Text, "%"+pat+"%", env, #PB_String_NoCase)
EndIf
EndIf
EndIf
EndIf
Until p1 = 0 Or p2 = 0
ProcedureReturn Text
EndProcedure
; testpattern...
Debug "Temp = " + ExpandEnvironmentVar("%TeMP%\ %temp% ")
Debug "Something% = " + ExpandEnvironmentVar("Something%")
Debug "'' = " + ExpandEnvironmentVar("")
Debug "StupidText = " + ExpandEnvironmentVar("%StupidText%")
Debug "appdata , programfiles = " + ExpandEnvironmentVar("%appData%, %programFiles%")
Using PureBasic latest stable version and current alpha/beta (x64) on Windows 11 Home