![]() |
String nach Komma löschen
Hallo Leute,
ich als Delphi-Neuling stehe total auf dem Schlauch! Ich habe einen zusammengesetzten String und möchte nach dem Komma (inkl. komma) alles löschen. Wie bekomme ich so was hin?? :wall:
Delphi-Quellcode:
Bisher habe ich die letzten 4 Zeichen abgeschnitten. Aber das ist ja nicht immer gleich.
s := DataSet['Familienname']; //Mustermann, M.
SetLength(s, Length(s) - 4); //letzten 4 Zeichen abschneiden Danke im voraus!! Mfg Norbert |
Re: String nach Komma löschen
Delphi-Quellcode:
Viel Spaß damit :stupid:
var s,r: String;
{...} s := 'Günter, Hans'; i := 1; r := ''; while s[i] <> ',' do begin r := r + s[i]; inc(i); end; //in dem String "r" steht jetzt alles vor dem Komma... EDIT: ALLEINHERRSCHER's Lösung ist besser ;) |
Re: String nach Komma löschen
Hi Norbert!
Am schnellsten und einfachsten ist das hier:
Delphi-Quellcode:
Hoffe ich habe keine Fehler eingebaut ;)
s := 'Familienname'; //Mustermann, M.
s := copy(s,1,pos(',',s)); //copy kopiert aus dem String s vom 1 ten Zeichen bis zum Komma pos(',',s) alle zeichen des Strings ;) Schöne Grüße und viel Spass mit Delphi :) Denk dran: Delphi rulz! |
Re: String nach Komma löschen
Hallo Norbert,
so könnte es funktionieren:
Delphi-Quellcode:
Grüße vom marabu
s := VarToStr(DataSet['Familienname']); // Mustermann, M.
i := Pos(',', s); if i > 0 then SetLength(s, Pred(i)); |
Re: String nach Komma löschen
Hey Leute, vielen Dank. Ihr seid ja schneller wie die Feuerwehr!! :mrgreen: :mrgreen:
Mfg Norbert |
Re: String nach Komma löschen
warum nicht einfach
Delphi-Quellcode:
s:='DP rul0rt,nicht'
Delete(s, pos(',', s), Length(s)); |
Re: String nach Komma löschen
Zitat:
LOL! Viele Wege führen nach Rom! |
Re: String nach Komma löschen
Zitat:
Gruß Hawkeye |
Re: String nach Komma löschen
schleimer -.-
|
Re: String nach Komma löschen
Könnte man es nicht auch als Hinweis auf mögliche Probleme bei allen anderen Lösungen verstehen?
|
Re: String nach Komma löschen
Zitat:
|
Re: String nach Komma löschen
Entweder das oder ein Leerstring (bei CK_CK). Zugegeben, das sind Sonderfälle, aber man sollte sie berücksichtigen. Nur allzu oft findet man hier in der DP Quelltexte der Form
Delphi-Quellcode:
oder ähnliches. Wenn man die Eingabedaten kennt und Fehler ausschließen kann, ist das kein Problem. Was aber, wenn später ein anderer (Newbie?) diesen kompakten Code übernimmt und auf seine eigenen Daten anwendet? Er wird möglicherweise nicht verstehen, daß er plötzlich Leerstrings erhält. marabus Code ist zwar nicht so kompakt, dafür ist er aber für jeden Anwender leicht nachvollziehbar.
s := copy(s,1,pos(',',s));
@inherited Obwohl ich es zunächst nicht geglaubt habe: dein Code funktioniert. Er nutzt aber (schamlos) aus, daß die VCL-Routine den String nicht verändert, wenn der Startindex nicht im zulässigen Bereich ist. Ich hätte erwartet, daß der Index korrigiert wird. Gruß Hawkeye |
Re: String nach Komma löschen
solange vorher geprüft wird, ob eines drin ist, nicht.
also das läuft und ist wohl auch am efektivsten (mit den Standrardroutinen):
Delphi-Quellcode:
Dieses
i := Pos(',', s);
if i > 0 then SetLength(s, i - 1);
Delphi-Quellcode:
sollte zumindestens etwa so aussehn
Delete(s, pos(',', s), Length(s));
Delphi-Quellcode:
[add]
if pos(',', s) > 0 then
Delete(s, pos(',', s), Length(s)); //oder doch lieber so i := pos(',', s); if i > 0 then Delete(s, i, Length(s)); @Hawkeye219: das hätte ich jetut och nicht gedacht ._. |
Re: String nach Komma löschen
Moin Zusammen,
um sicherzustellen, dass tatsächlich der letzte Abschnitt hinter dem Komma entfernt wird, sollte man LastDelimiter verwenden. (Falls nicht gesichert ist, dass nur ein Komma enthalten ist).
Delphi-Quellcode:
s := 'Dies, ist, ein, Test';
iPos := LastDelimiter(',',s); if iPos > 0 then SetLength(s,iPos-1); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz