Autor Beitrag
Danny W.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 296

Windows XP, WIN 2000
Delphi 2005 PE
BeitragVerfasst: Mi 29.11.06 10:49 
Hallo,
ich habe hier einen String..sagen wir mal:

ausblenden Quelltext
1:
Ach du schöne Welt!					


davon möchte ich jetzt gerne die Leerzeichen entfernen. Zuerst habe ich es mit Pos und Delete gemacht. Allerdings bin ich dann auf die Funktion "Trim" gestoßen...allerdings ersetzt er bei mir nur die ersten und letzten leerstellen (was ja auch laut Delphi Hilfe so sein soll^^)

Gibt es jetzt noch eine alternative um jedes Leerzeichen zu löschen?

liebe Grüße,

Danny

_________________
"Ich find den Fehler nicht. Der Artist wird immer als "Syntax Error" gezeigt :("
"Ach verdammt, der Artist heißt wirklich "Syntax Error" xD"
oldmax
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 380


D3 Prof, D4 Prof
BeitragVerfasst: Mi 29.11.06 11:06 
Hi
Ich könnte mir mehrere Vorgehensweisen vorstellen, die ich dann in eine Function packe.

Z.B.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
Function TMyForm.Leerweg(Quelle: String):String;
Var i     : Integer;
    Ziel  : String;
Begin
  Ziel:='';
  For i:=1 to Length(Quelle) do if Quelle[i] <>' ' then Ziel:=Ziel+Quelle[i];
  Result:=Ziel;
end;


Natürlich geht auch delete und Pos an dieser Stelle, aber du wirst nicht drum herum kommen, irgendwie jedes einzelne Zeichen zu prüfen. Machen übrigends eingebaute Functions nicht anders, vielleicht in einer anderen Sprache, aber auch wenn du direkt mit ASM auf den Speicher zugreifst, musst du Byte für Byte prüfen und das Ergebnis irgendwohin schreiben.
Gruß oldmax

_________________
Zier dich nich so, ich krieg dich schon....
Danny W. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 296

Windows XP, WIN 2000
Delphi 2005 PE
BeitragVerfasst: Mi 29.11.06 11:11 
das funktioniert super =) vielen dank

_________________
"Ich find den Fehler nicht. Der Artist wird immer als "Syntax Error" gezeigt :("
"Ach verdammt, der Artist heißt wirklich "Syntax Error" xD"
iKilledKenny
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 394
Erhaltene Danke: 8

Win XP
D5 Prof, C# Express 2005
BeitragVerfasst: Mi 29.11.06 11:18 
das sollte auch einfacher gehen:

ausblenden Delphi-Quelltext
1:
sTxt := StringReplace (sTxt, #32'', [rfReplaceAll]);					


grüße
alex
Danny W. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 296

Windows XP, WIN 2000
Delphi 2005 PE
BeitragVerfasst: Mi 29.11.06 11:21 
acuh eine schöne Lösung =)

aber die Idee mit der function war nicht schlecht..so kann ich das auch häufiger verwenden..Danke euch beiden

liebe Grüße,
Danny

_________________
"Ich find den Fehler nicht. Der Artist wird immer als "Syntax Error" gezeigt :("
"Ach verdammt, der Artist heißt wirklich "Syntax Error" xD"
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mi 29.11.06 11:54 
Dann baue aber bitte noch eine Prüfung ein. Falls "Quelle" mal ein Leerstring ist, könnte es sonst zu Problemen kommen.
Danny W. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 296

Windows XP, WIN 2000
Delphi 2005 PE
BeitragVerfasst: Mi 29.11.06 12:01 
wäre schon sinnvoll, allerdings kann das definitiv nicht vorkommen! Da ich nur die Leerzeichen aus Dateinamen entfernen möchte..diese haben ja noch mindestens eine Endung, sonst werden sie garnicht erst gelesen :)

mfG

_________________
"Ich find den Fehler nicht. Der Artist wird immer als "Syntax Error" gezeigt :("
"Ach verdammt, der Artist heißt wirklich "Syntax Error" xD"
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mi 29.11.06 12:05 
Das kann nur bei Deinem jetzigen Einsatz nicht vorkommen (wirklich nicht?). Wenn Du die Funktion mal woanders benötigst, denkst Du vielleicht nicht mehr daran und verlässt Dich darauf, dass sie einwandfrei funktioniert.
Aber Du musste es natürlich nicht machen... :twisted:
Danny W. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 296

Windows XP, WIN 2000
Delphi 2005 PE
BeitragVerfasst: Mi 29.11.06 12:18 
Hauptsache ein schlechtes gewissen einreden :P *implementier*

so..jetz habe ich die abfrage mit drinne + auskommentiert usw. ^^

Danke nochmal an alle

_________________
"Ich find den Fehler nicht. Der Artist wird immer als "Syntax Error" gezeigt :("
"Ach verdammt, der Artist heißt wirklich "Syntax Error" xD"
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Mi 29.11.06 12:37 
Hallo!

Wieso soll die Funktion nicht arbeiten, wenn Quelle leer ist? Die For-Schleife wird bei einem leeren String doch gar nicht angegangen...

Cu,
Udontknow
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mi 29.11.06 12:59 
Hallo Andreas,

habe ich gerade mal geprüft. Du hast Recht.
Aber war das früher nicht mal so, dass eine For-Schleife mindestens einmal durchlaufen wird?

Gruß,
Peter
Pille
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 105

Windows 7
DelphiXE Prof.
BeitragVerfasst: Mi 29.11.06 13:23 
user profile iconjasocul hat folgendes geschrieben:

Aber war das früher nicht mal so, dass eine For-Schleife mindestens einmal durchlaufen wird?


Ich denke, nur dann, wenn der 2 Parameter wenigestens so groß ist wie der erste.
ausblenden Delphi-Quelltext
1:
From i := 1 to 0 do					

wird dann nicht durchlaufen, da die Bedingung schon zuvor erfüllt ist.

mfg Pille