AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem bei Löschen aus String

Ein Thema von DF.A · begonnen am 17. Aug 2004 · letzter Beitrag vom 17. Aug 2004
Antwort Antwort
DF.A

Registriert seit: 20. Jul 2004
30 Beiträge
 
#1

Problem bei Löschen aus String

  Alt 17. Aug 2004, 12:34
Hallo, ich habe einen String bei dem ich alle Leerstellen in Semikolons umwandel, da ich leerstellen als Semikolon angezeigt bekommen möchte. Bei mehreren Leerzeichen soll allerdings auch nur ein Semikolon zwischen den Buchstaben stehen. Deshalb probiere ich mit einer Schleife die überflüssigen Semikolons zu löschen. Das ist allerdings der Moment wo die Sache nicht mehr so ganz funktioniert. Ich muss da irgendwo einen logischen Fehler drin haben komme aber überhaupt nicht drauf.
Also der String der in die Schleife übergeben sieht ungefähr flogendermaßen aus: sfslfj;;;;;safkjfsh;;;;sjf;jsf, soll nach der Schleife aber so aussehen: sfslfj;safkjfsh;sjf;jsf siehr aber so aus sfslfj;;safkjfsh;;sjf;jsf. Es werden nicht alle Semikolons gelöscht. Hier ist meine Source.
Delphi-Quellcode:
 TrimString := Trim(OriginalString);
 SemikolonString := StringReplace(TrimString, ' ', ';', [rfReplaceAll]);
 iLaenge := Length(OriginalString);
   for i := 0 to (iLaenge - 1) do begin
   if (SemikolonString[i] = ';') and (SemikolonString[i + 1] = ';') then begin
     Delete(SemikolonString,i,1);
   end;
 end;
 result := SemikolonString;
könnt ihr euch ja vielleicht mal angucken
mfg
DF.A
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

Re: Problem bei Löschen aus String

  Alt 17. Aug 2004, 12:42
Delphi-Quellcode:
repeat
  temp := SemikolonString;
  SemikolonString := StringReplace(temp, ';;', ';', [rfReplaceAll]);
until SemikolonString = temp;
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
xineohp

Registriert seit: 29. Jan 2004
Ort: Heusenstamm
420 Beiträge
 
Delphi 2005 Professional
 
#3

Re: Problem bei Löschen aus String

  Alt 17. Aug 2004, 12:44
moin,

du darfst keine For-Schleife verwenden. Bei For-Schleifen darf die Indexvariable inerhalb der Schleife nicht geändert werden und auch der Indexbereich (soll heißen: Ausgangs und Zielwert der Indexvariablen) muss unverändert bleiben.
Nimm stattdessen eine while-Schleife, deren Index du selber steuerst: immer wenn etwas gelöscht wurde bleibt der Index unverändert, da ja jetzt ein anderes Zeichen an dieser Position sitzt. Andernfalls wird solange um eins erhöht bis wir am Énde des Strings angekommen sind.

Delphi-Quellcode:
TrimString := Trim(OriginalString);
SemikolonString := StringReplace(TrimString, ' ', ';', [rfReplaceAll]);

   i := 1;
   while i < length(Semikolonstring)-1 do
     if (SemikolonString[i] = ';') and (SemikolonString[i + 1] = ';')
       then Delete(SemikolonString,i,1);
       else inc(i);
 
result := SemikolonString;
Peter Enenkel
  Mit Zitat antworten Zitat
DF.A

Registriert seit: 20. Jul 2004
30 Beiträge
 
#4

Re: Problem bei Löschen aus String

  Alt 17. Aug 2004, 12:46
Hi
danke das funktioniert wie geschmiert .
Ist auch irgendwie viel einfacher. Bin noch Anfänger deshalb muss ich bei sowas noch nen bisschen was lernen.
Vielen Dank jedenfalls.
  Mit Zitat antworten Zitat
chris

Registriert seit: 24. Mai 2003
Ort: Düsseldorf
196 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Problem bei Löschen aus String

  Alt 17. Aug 2004, 12:48
hi,

vielleicht so (nicht getestet):

Delphi-Quellcode:
  TrimString := Trim(OriginalString);
  SemikolonString := StringReplace(TrimString, ' ', ';', [rfReplaceAll]);
  iLaenge := Length(OriginalString);
  repeat
    ok := true;
    for i := 0 to (iLaenge - 1) do
      if (SemikolonString[i] = ';') and (SemikolonString[i + 1] = ';') then begin
        Delete(SemikolonString, i, 1);
        ok := false
      end;
  until ok;
  result := SemikolonString
Chris
D2009.4 | Vista SP2 x32
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:39 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