Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zeichen in einen String loeschen (https://www.delphipraxis.net/54642-zeichen-einen-string-loeschen.html)

lucius 8. Okt 2005 17:21


Zeichen in einen String loeschen
 
Hallo habe folgendes Problem.
Ich habe einen string

Delphi-Quellcode:
s := sectionid=15">SVCD
Jetzt moechte ich das nur SVCD in einer Listbox eingetragen wird, hat jemand ne Idee?
Bitte helft mir.

Luckie 8. Okt 2005 17:22

Re: Zeichen in einen String loeschen
 
Such mit Delphi-Referenz durchsuchenpos das ">" und kopiere den rest mit Delphi-Referenz durchsuchencopy

Ultimator 8. Okt 2005 17:27

Re: Zeichen in einen String loeschen
 
Delphi-Quellcode:
SVCDString := copy(GanzerString, pos('SVCD', GanzerString), 4);
Das müsste eigentlich das SVCD aus dem String rauskopieren.

Oder wenn das SVCD nur ein Beispiel war, und stattdessen dort auch DVD oder VCD oder sowas stehen kann, dann musst du eben mit Delphi-Referenz durchsuchenpos nach dem "Größer-als"-Zeichen suchen, und von dort an kopieren (Delphi-Referenz durchsuchencopy).

Fällt mir jetz ein, dass es das vermutlich eher ist, weil wenn du IMMER SVCD kopieren willst, wäre das schwachsinnig, dann könntest du gleich SVDCString := 'SVCD' schreiben :stupid:

lucius 8. Okt 2005 17:33

Re: Zeichen in einen String loeschen
 
Danke erstmal fuer eure Antworten aber der String koennte auch sectionid=16">DVD oder sectionid=18">Progs heissen.
Das suchen mit Pos nach > ergibt keinen Sinn weil in dem text lauter > stehen und ich shon mit Pos nach sectioid suche.

Delphi-Quellcode:
if Pos('sectionid', Richedit1.Lines.Strings[b]) > 0 then
Da kommt dan der String sectionid=16">DVD raus wobei ich DVD zb rausnemen moechte.

Ultimator 8. Okt 2005 17:38

Re: Zeichen in einen String loeschen
 
Steht das DVD oder SVCD immer am Ende des Strings?
Dann geh doch einfach in einer Schleife den String von hinten an durch, schau, wann das erste mal ein '>' auftritt, und speichere in einer Variablen, der wievielte Schleifendurchlauf das war. Dann kopierst du alles von (Length(GanzerString)-Durchlaufzaehler{evtl. noch -1}) bis length(string)-1. Jetz müsstest du das SVCD oder DVD oder wasauchimmer gefunden haben.

lucius 8. Okt 2005 17:44

Re: Zeichen in einen String loeschen
 
Hoert sich ja gut an Ultimator aber kansst mir nen bischen mit code auf dem Weg helfen, waere sehr net danke im voraus.

Ultimator 8. Okt 2005 18:01

Re: Zeichen in einen String loeschen
 
Delphi-Quellcode:
const str = 'sectionid=15">SVCD'; //muss ja kein const sein, kannst das auch in ne Funktion packen und den string als Parameter übergeben
var i, found: integer;
ergebnis: string;
...
for i := length(str) downto 1 do
  begin
   if str[length(str) - i] = '>' then
    begin
     found := length(str) - i;
     ergebnis := copy(str, found +1, length(str)- found);
     ShowMessage(ergebnis);
     break;
    end;
  end;

marabu 8. Okt 2005 18:34

Re: Zeichen in einen String loeschen
 
Hallo lucius,

ich hatte dir in deinem anderen thread bereits geschrieben, dass du wahrscheinlich besser mit einem Parser arbeitest um dein Problem zu lösen. Du hast dir daraufhin ja auch einige threads zum Thema Parser angesehen. Willst du diesen Ansatz auf jeden Fall vermeiden? Falls deine XML Datei nicht streng geheim ist, könntest du sie hier einstellen und wir könnten dir ein wenig Code geben mit dem du dich beschäftigen könntest um diese Technik zu erlernen.

Freundliche Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:51 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