webForumDet fria alternativet

Läsa och ändra i textfil?

ASP

9 svar · 568 visningar · startad av nisslass

Medlem sedan nov. 2001348 inlägg
Frågan#1

Hejsvejs.

Jag har en config.cfg som ser ut såhär (endast 3 rader):

hostname "Nisses spelservice"
rcon_password "bananeregoa"
sv_password ""

Nu vill jag att man via ett asp-script skall få se följande information:

Ditt nuvarande hostname: Nisses spelservice

Behöver hjälp med hur jag får ut det nuvarande hostnamet ut CFG'n.

Man ska kunna ändra informationen men det är ju bara att generera en ny textfil och skriva över den som redan finns.

Medlem sedan apr. 20031 660 inlägg
#2

HEJ!

FSO och Textstream är vad du behöver.
Jag tolkar din fråga som att du inte har problem att skapa en ny textfil, utan endast att läsa den, men jag tipsar om FSO också.

http://www.devguru.com/Technologies/vbscript/quickref/filesystemobject.html
http://www.devguru.com/Technologies/vbscript/quickref/textstream.html

Medlem sedan nov. 2001348 inlägg
#3

Jag har inga problem att läsa filen men jag behöver en kodsnutt som tar ut nuvarande hostname.

Medlem sedan apr. 20031 660 inlägg
#4

HEJ!

Det var därför jag skickade med TextStream, där finns en metod som heter ReadLine, http://www.devguru.com/Technologies/vbscript/quickref/textstream_readline.html

Medlem sedan nov. 2001348 inlägg
#5

Jo.. men alltså.
Jag kan läsa varje rad utan problem och skriva ut texten utan problem. Men nu vill jag ju bara från "hostname "Nisses spelservice" " endast skriva ut "Nisses spelservice".

Jag är sämst på att formatera text. ;)

Medlem sedan apr. 20031 660 inlägg
#6

HEJ!

Jaaaasssssssåååååååå!
Var det SÅ enkelt :e

1. Varför skriver du in "hostname " i filen? Om ej behövs, är det klart från början.
2. Replace(raden,"hostname ",""), dvs leta upp hostname, ersätt med inget.
3. Finns den sista (och första) " också, gör Replace(Replace(raden,"hostname ",""),chr(34), "")
4. Man kan använda ett RegExp som söker efter fnuttarna, och returnerar värdet emellan.

r: formaterade Replace felaktigt

Medlem sedan maj 200010 687 inlägg
#7

Glöm bara inte att...
hostname Warserver
...också är korrekt syntax i config filer för CS/liknande.

Medlem sedan maj 200010 687 inlägg
#8

J.N. skrev:

1. Varför skriver du in "Hostname " i filen? Om ej behövs, är det klart från början.

Hostname behövs i en config fil. Jag gissar att han vill använda det någon annanstans...

Eller är det så att du vill kunna ändra saker i config filen från en webbsida?
I så fall skulle jag gjort så här:

1. Ha en templateconfig.cfg som du utgår ifrån varje gång du ska göra en ändring.
2. I den finns hostname "[HOSTNAME]"
3. Gör en replace på [HOSTNAME] till det du vill ha.
4. Spara som config.cfg

Mycket enklare än att hålla på och förksa tolka config-filer. :)

Medlem sedan maj 200010 687 inlägg
#9

Kunde inte hindra mig själv från att göra två funktioner för config-filer. Den första hämtar ett värde ur configen (config-texten får man skicka in). Den andra byter ut ett värde i configen.

Function GetConfigCommandValue(ByVal sConfig, ByVal sCommandName)
	Dim objRegExp, mc
	Set objRegExp = New RegExp
	objRegExp.IgnoreCase = True
	objRegExp.Pattern = sCommandName & " ""(.*)"""
	Set mc = objRegExp.Execute(sConfig)
	Set objRegExp = Nothing
	
	If mc.Count Then
		GetConfigCommandValue = mc.Item(0).SubMatches(0)
	End If
	Set mc = Nothing
End Function

Response.Write GetConfigCommandValue("sv_cheats 0" & vbCrLf & "hostname ""SK Warserver""" & vbCrLf & "...", "hostname")

Function ReplaceConfigCommandValue(ByVal sConfig, ByVal sCommandName, ByVal sNewValue)
	Dim objRegExp, mc, mi
	Set objRegExp = New RegExp
	objRegExp.IgnoreCase = True
	objRegExp.Pattern = "(" & sCommandName & ") "".*"""
	
	ReplaceConfigCommandValue = objRegExp.Replace(sConfig, "$1 """ & sNewValue & """")
	Set objRegExp = Nothing
End Function

Response.Write ReplaceConfigCommandValue("sv_cheats 0" & vbCrLf & "hostname ""SK Warserver""" & vbCrLf & "...", "hostname", "EYE Warserver")

Dessa förutsätter dock att man angett värdet med citat-tecken...

Medlem sedan nov. 2001348 inlägg
#10

Funkar aldeles utmärkt.
Är till ett gäng CS-servrar. Kunderna skall kunna ändra lite själva och nu går det fin fint. :)

268 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)