Avatar billede azs Nybegynder
12. juli 2001 - 21:01 Der er 13 kommentarer og
1 løsning

rediger i fil funktion

Jeg er ved at lave et lille program til min CS server! Det er et program som man kan starte en dedicated server med så man ikke selv skal lege med server.cfg filen.

Jeg er så kommet ind i et problem med at jeg ikke kan finde ud af at lave en funktion der kan læse og skrive til server.cfg filen!

Det er så derfor jeg spørger om der er en som vil lave denne funktion for mig! Det der udskriver behøves kun at være en string for så convatere jeg det bare til integer eller boolean verdier!

Sådan ser filen ud!
//CS server.cfg
// disable autoaim
sv_aim 0

// disable clients\' ability to pause the server
pausable 0

// default server name. Change to \"Bob\'s Server\", etc.
hostname \"Counter-Strike 1.1 Server\"

// maximum client movement speed
sv_maxspeed 320

// 20 minute timelimit
mp_timelimit 20

sv_cheats 0
sv_autoaim 0
sv_pausable 0
con_color \"255 155 50\"
mp_roundtime 5
mp_freezetime 3
mp_c4timer 30
mp_hostagepenalty 0
mp_limitteams 2
mp_autoteambalance 1
mp_friendlyfire 1
mp_autokick 1
mp_tkpunish 0
mp_forcechasecam 0
mp_footsteps 1
mp_flashlight 1
maxplayers 8
Avatar billede martinlind Nybegynder
12. juli 2001 - 22:13 #1
Bruge en TStringList og SaveToFile, LoadFromFile, så får du hver enkelt line som en Item i din liste

/Martin
Avatar billede azs Nybegynder
13. juli 2001 - 13:14 #2
Sådan havde jeg også tænkt på at lave det først men da jeg bruger et andet program som tilføjer noget andet end dette til filen kan jeg ikke gøre det på denne måde!
Avatar billede martinlind Nybegynder
13. juli 2001 - 13:19 #3
Så må du bruge :

VAR

  F : TextFile;
  Strx : String;

begin
  AssignFile(F,\'filnavn\');
  Reset(F);
  repeat
      ReadLn(F,Strx);
  until EOF(F);
  CloseFile(F);
end;

/Martin
Avatar billede azs Nybegynder
13. juli 2001 - 13:22 #4
Er det så alle linjer som kommer i Strx ?
Avatar billede martinlind Nybegynder
13. juli 2001 - 13:27 #5
De kommer en af gangen ( ReadLn = læsline )
Avatar billede martinlind Nybegynder
13. juli 2001 - 13:28 #6
Du kan evt. lave din until sådan :

Until Eof(F) or ( Strx = \'sv_cheats 0\' );
Avatar billede azs Nybegynder
13. juli 2001 - 13:35 #7
aah sådan =)

hvordan så hvis man skal skrive til den ?
Avatar billede azs Nybegynder
13. juli 2001 - 13:43 #8
Er det bare WriteLn(F,Strx) ?

Avatar billede martinlind Nybegynder
13. juli 2001 - 14:01 #9
Yes, og hvis du skal skrive uden nyline er det Write(); og vist du vil truncate filen, skal slette en line, skal du bruge ReWrite i stedet for Reset, kig evt. i hjælpen \"TextFile\"

/Martin
Avatar billede azs Nybegynder
13. juli 2001 - 14:13 #10
okay!

Nu kan jeg jo ikke lige helt vide hvad linien hedder da der kan være forskellige endelser som 0/1/213 osv..

Så var jeg tænkte på om man ikke konne gøre noget alla dette?

function ReadServerFile(filename,line:string):string;
var
F : TextFile;
Str1,Str2 : String;
begin
  AssignFile(F,filename);
  Reset(F);
  repeat
      ReadLn(F,Str1);
      ReadLn(F,Str2);
  until EOF(F) or ( SetLength(Str2,line.length ) = line );
  CloseFile(F);
  Result := Str1;
end;

Men det virker ikke helt ! Kan du hjælpe ??
Avatar billede azs Nybegynder
13. juli 2001 - 14:14 #11
Input til denne funktion vil så f.eks. være \"mp_timelimit\" uden \"
Avatar billede azs Nybegynder
13. juli 2001 - 14:15 #12
altså sådan her  : ReadServerFile(\'cstrike\\server.cfg\',\'mp_timelimit\');
Avatar billede martinlind Nybegynder
13. juli 2001 - 14:54 #13
Sådan evt.

until EOF(F) or ( Pos(\'mp_timelimit\',Str1) = 1 );
 
Og så skal du ikke læse mere en en line ad gangen i dit loop, eller kan du læse udover fil længden.

PS : Længden på en streng = Length(Strx);

/Martin
Avatar billede azs Nybegynder
13. juli 2001 - 15:37 #14
tak nu virker det helt som jeg vil ha det skal virker =)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester