Autor Beitrag
raven
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 54



BeitragVerfasst: Mo 10.02.03 16:49 
hi leuzt ...

Ich habe in einer stringvariable eine pfad angabe gespeichert, aber es gibt die möglichkeit das ganz am ende vom pfad entweder ein "\" oder zwei "\\" sind ... das möchte ich überprüfen und wenn es 2 slashe sind möchte ich das der eine davon gelöscht wird ...

also wenn ich habe

G:\\ soll das zu G:\ werden...

wenn ich habe

G:\ soll das G:\ bleiben

danke ;)
DaRkFiRe
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 526

WinXP Home & Professional
C, C++, Delphi
BeitragVerfasst: Mo 10.02.03 17:08 
Einfach im String solange nach den "\\" suchen und diese ersetzen, bis keine mehr davon vorhanden sind...

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
function simpSlashes (S:STRING):STRING;
var R:STRING;
var iIdx:INTEGER;
begin
  R:=S;
  repeat
    iIdx:=POS('\\',R);
    IF iIdx > 0 THEN
      DELETE(R,iIdx,1);
  until (iIdx = 0);
  Result:=R;
end;

_________________
Lang ist der Weg durch Lehren - kurz und wirksam durch Beispiele! Seneca
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 10.02.03 17:18 
Oder:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
var
  s : String;
begin
  s := Pfath;
  if (s[length] = '\') and (s[length-1] = '\') then
    delete(s, length, 1);


Wenn ich ihn richtig verstanden haben, kann es nur am Ende vorkommen. Außerdem dürfte das schneller sein, da pos viel Rechenzeit braucht.
raven Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 54



BeitragVerfasst: Mo 10.02.03 17:42 
@lucky

der code funtzt leider nich ;(

Die Fehler:

( erwartet aber ] gefunden

( erwartet aber - gefunden

Operator ist auf diesen Operatoprentyp nicht anwendbar

zu viele parameter (bei dem delete befehl werden bei mir keine paramter erwartet?!?)

Inkompliatable typen


?!?
smiegel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: Mo 10.02.03 17:52 
Hallo,

Luckie ist in seinem Code ein kleiner aber gemeiner Fehler unterlaufen! Die Variable length ist so nicht deklariert, aber er meinte wahrscheinlich s[Length(s)].

So müsste es gehen:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var 
  s : String; 
  aLen:Integer;

  ...
  s := Pfath; 
  aLen:=Length(s);
  if (s[aLen] = '\') and (s[aLen-1] = '\') then 
    System.Delete(s, aLen, 1); 
  ...

_________________
Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 10.02.03 18:08 
Ich wüßte zu gerne, was ein Pfath ist ... :lol:

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 10.02.03 18:54 
Jupp. So isses. Ich war zu faul Delphi anzuwerfen. :roll:
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Mo 10.02.03 20:21 
Also ich will ja nix sagen *g* Aber das ganze geht auch mit einem einzigen Befehl...

ausblenden Quelltext
1:
S:=StringReplace(S,'\\','\',[rfReplaceAll,rfIgnoreCase]);					


Au'revoir,
Aya

_________________
Aya
I aim for my endless dreams and I know they will come true!
smiegel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: Mo 10.02.03 21:20 
Hallo,

@Aya, @DaRkFiRe

so einfach geht es nicht.
Wenn ich einen UNC-Pfad ("\\[SERVER_NAME]\[VOLUME_NAME]\[VERZEICHNIS]\") habe, bekomme ich mit Euren Lösungen Probleme.

Die Frage war auch nicht, das 1. Vorkommen oder alle Vorkommen zu ersetzen, sondern den überflüssigen Backslash am Schluß :idea:

_________________
Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 10.02.03 21:22 
So habe ich es auch verstanden, deswegen meine (fehlerhafte) Lösung mit der Stringlänge.