Avatar billede sorenriis Nybegynder
03. august 2005 - 20:30 Der er 6 kommentarer og
1 løsning

Fjene kommentarer fra fil

Jeg har en txt-fil, som ser sådan ud (ikke det hele - kun et "udklip"):
-------

[ Mechanical Failures ]
CURNT Failure Rate="1" // Mechanical failure rate (0-none, 1-normal, 2-timescaled, 3-season)
PRACT Failure Rate="1" // Mechanical failure rate (0-none, 1-normal, 2-timescaled, 3-season)
QUICK Failure Rate="1" // Mechanical failure rate (0-none, 1-normal, 2-timescaled, 3-season)
GPRIX Failure Rate="1" // Mechanical failure rate (0-none, 1-normal, 2-timescaled, 3-season)
CHAMP Failure Rate="2" // Mechanical failure rate (0-none, 1-normal, 2-timescaled, 3-season)
MULTI Failure Rate="2" // Mechanical failure rate (0-none, 1-normal, 2-timescaled, 3-season)
RPLAY Failure Rate="2" // Mechanical failure rate (0-none, 1-normal, 2-timescaled, 3-season)

[ Race Conditions ]
Run Practice1="0"
Run Practice2="0"
Run Practice3="0"
Run Practice4="1"
Run Qualify="0"
Run Warmup="0"
Race Timer="0" // Seconds between displaying time remaining in race (zero disables)

-------

Her vil jeg gerne have fjernet alle kommentarer efter værdierne, således at
CURNT Failure Rate="1" // Mechanical failure rate (0-none, 1-normal, 2-timescaled, 3-season)
blev til
CURNT Failure Rate="1"

Hvordan laves det?
Avatar billede kroning Nybegynder
03. august 2005 - 20:56 #1
(Utestet)

var
  SL : TStringList;
  i : integer;
  Temp : string;
begin
  SL:=TStringList.Create;
  SL.LoadFromFile('c:\minfil.txt');
  for i:=0 to SL.Count-1 do
  begin
    Temp:=SL[i];
    if pos('//',Temp)>0 then
    begin
      Delete(Temp,pos('//',Temp),MaxInt);
      SL[i]:=Temp;
    end;
  end;
  SL.SaveToFile('c:\minfil.txt');
end;
Avatar billede hrc Mester
04. august 2005 - 14:06 #2
Kan ikke dy mig for at justere lidt i Kronings ellers fungerende algoritme:

Kroning: Delphi har ikke Garbage Collection - ej heller i scope af en procedure eller funktion.

var
  i : integer;
  SL : TStringList;
begin
  SL := TStringList.Create;
  try
    SL.LoadFromFile('c:\minfil.txt');
    for i:=0 to SL.Count-1 do
    begin
      p := pos('//',SL[i]);
      if p > 0 then
        System.Delete(SL[i],p,MaxInt); // Plejer at få fat i den forkerte Delete
    end;
    SL.SaveToFile('c:\minfil.txt');
  finally
    SL.Free; // Frigiver objektet.
  end;
end;
Avatar billede sorenriis Nybegynder
04. august 2005 - 15:15 #3
Manglede lige at deklarere variablen p.

Men derefter får jeg denne fejl:
[Error] Unit1.pas(326): E2197 Constant object cannot be passed as var parameter
i linjen
System.Delete(SL[i],p,MaxInt);
Avatar billede kroning Nybegynder
04. august 2005 - 22:03 #4
Jeg har brugt Temp:=SL[i]; i mit forslag netop for at undgå denne fejl, her er den igen lettere tilrettet, dog stadig utestet :)

var
  SL : TStringList;
  i : integer;
  Temp : string;
begin
  SL:=TStringList.Create;
  SL.LoadFromFile('c:\minfil.txt');
  for i:=0 to SL.Count-1 do
  begin
    if pos('//',SL[i])>0 then
    begin
      Temp:=SL[i];
      Delete(Temp,pos('//',Temp),MaxInt);
      SL[i]:=Temp;
    end;
  end;
  SL.SaveToFile('c:\minfil.txt');
  SL.Free;
end;
Avatar billede sorenriis Nybegynder
05. august 2005 - 22:51 #5
Den virker... Mange tak..

HRC - afgiv lige svar hvis du vil have del i points..
Avatar billede hrc Mester
06. august 2005 - 18:18 #6
Nej tak, ellers tak. Løsningen er Kronings.
Avatar billede sorenriis Nybegynder
06. august 2005 - 19:03 #7
OK.. Kroning her er points :-)
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