Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Delete in einem String macht mir Kopfschmerzen (https://www.delphipraxis.net/25189-delete-einem-string-macht-mir-kopfschmerzen.html)

torud 2. Jul 2004 14:38


Delete in einem String macht mir Kopfschmerzen
 
Hallo Wissende!

mit folgender procedure versuche ich Kommentare aus einer CSS-Datei zu löschen, damit ich sie anschliessend parsen kann.

Dabei habe ich ein komisches Phänomen.

Delphi-Quellcode:
function ClearCommentarTStrings(Inhalt:TStrings):String;
var
  i,beg_com,end_com:integer;
  myInhalt:string;
begin
  {hier wird ein string konstruiert, der ohne cf und cr
   auskommt, da es sich dann besser suchen lässt}
  for i:=0 to Inhalt.Count -1 do
    begin
       myInhalt:=myInhalt + Inhalt.Strings[i]
    end;
  myInhalt:=Trim(myInhalt);
  while (Pos('/*',myInhalt)) > -1 do
    begin
      beg_com:=Pos('/*',myInhalt); //ShowMessage(inttostr(beg_com));
      end_com:=Pos('*/',myInhalt); //ShowMessage(inttostr(end_com));
      if beg_com > 0 then
        begin
          if end_com > 0 then
            begin
              ShowMessage('vor dem löschen:'+myInhalt);
              delete(myInhalt,beg_com,end_com+1);
              ShowMessage(myinhalt);
            end
          else exit;
        end
      else
        begin
          Result:=myInhalt;
          exit;
        end;
      beg_com:=-1;
      end_com:=-1;
    end;
end;
Ich weiss, der Code ist was für kleine Kinder, aber ich werde wohl nie erwachsen. Das Problem ist dass die Kommentare, die am Anfang und am Ende des Codes stehen, richtig gelöscht werden. Steht aber ein Kommentar zwischen 2 Elementen (z.B.)

Code:
body {}

/*kommentar*/

table{}
dann wird irgendwie viel zu viel gelöscht und es bleibt nur das erste element übrig. Hat jemand eine Idee???

[edit=sakura] [code] -> [delphi] Mfg, sakura[/edit]

sakura 2. Jul 2004 14:41

Re: Delete in einem String macht mir Kopfschmerzen
 
Gewöhne Dir mal die [delphi]Tags an :roll: [code] ist recht unpraktisch für lange Delphi-Texte.

...:cat:...

sakura 2. Jul 2004 14:43

Re: Delete in einem String macht mir Kopfschmerzen
 
Delete nimmt nicht Von...Bis, sondern Von, WIEVIEL

Damit wird aus
Delphi-Quellcode:
delete(myInhalt,beg_com,end_com+1);
folgendes
Delphi-Quellcode:
delete(myInhalt,beg_com,end_com-beg_com+1);
...:cat:...

torud 2. Jul 2004 15:20

Re: Delete in einem String macht mir Kopfschmerzen
 
Hallo Sakura,

wie dumm von mir! Nun hauts hin!
Ich musste allerdings aus dem "+1" ein "+2" machen. Ich vermute mal, dass das daran liegt, weil ich einen String mit 2 Buchstaben löschen muss!

Delphi-Quellcode:
  delete(myInhalt,beg_com,end_com-beg_com+2);
Sorry wegen des [Code]-Fehlers. Wird nicht wieder vorkommen! :stupid:

sakura 2. Jul 2004 15:25

Re: Delete in einem String macht mir Kopfschmerzen
 
Zitat:

Zitat von torud
Ich musste allerdings aus dem "+1" ein "+2" machen. Ich vermute mal, dass das daran liegt, weil ich einen String mit 2 Buchstaben löschen muss!

Stimmt ;)

...:cat:...


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz