Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi String nach Komma löschen (https://www.delphipraxis.net/71771-string-nach-komma-loeschen.html)

norbert3 20. Jun 2006 20:46


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:
s := DataSet['Familienname']; //Mustermann, M.
  SetLength(s, Length(s) - 4); //letzten 4 Zeichen abschneiden
Bisher habe ich die letzten 4 Zeichen abgeschnitten. Aber das ist ja nicht immer gleich.

Danke im voraus!!
Mfg Norbert

CK_CK 20. Jun 2006 20:50

Re: String nach Komma löschen
 
Delphi-Quellcode:
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...
Viel Spaß damit :stupid:

EDIT: ALLEINHERRSCHER's Lösung ist besser ;)

alleinherrscher 20. Jun 2006 20:50

Re: String nach Komma löschen
 
Hi Norbert!

Am schnellsten und einfachsten ist das hier:

Delphi-Quellcode:
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 ;)
Hoffe ich habe keine Fehler eingebaut ;)

Schöne Grüße und viel Spass mit Delphi :) Denk dran: Delphi rulz!

marabu 20. Jun 2006 20:51

Re: String nach Komma löschen
 
Hallo Norbert,

so könnte es funktionieren:

Delphi-Quellcode:
s := VarToStr(DataSet['Familienname']); // Mustermann, M.
i := Pos(',', s);
if i > 0 then
  SetLength(s, Pred(i));
Grüße vom marabu

norbert3 20. Jun 2006 20:55

Re: String nach Komma löschen
 
Hey Leute, vielen Dank. Ihr seid ja schneller wie die Feuerwehr!! :mrgreen: :mrgreen:

Mfg Norbert

inherited 20. Jun 2006 20:55

Re: String nach Komma löschen
 
warum nicht einfach
Delphi-Quellcode:
s:='DP rul0rt,nicht'
Delete(s, pos(',', s), Length(s));

alleinherrscher 20. Jun 2006 20:57

Re: String nach Komma löschen
 
Zitat:

Zitat von inherited
warum nicht einfach
Delphi-Quellcode:
s:='DP rul0rt,nicht'
Delete(s, pos(',', s), Length(s));


LOL! Viele Wege führen nach Rom!

Hawkeye219 20. Jun 2006 21:13

Re: String nach Komma löschen
 
Zitat:

Zitat von alleinherrscher
LOL! Viele Wege führen nach Rom!

Aber marabu wird als einziger dort immer ankommen...

Gruß Hawkeye

inherited 21. Jun 2006 07:52

Re: String nach Komma löschen
 
schleimer -.-

Hawkeye219 21. Jun 2006 09:57

Re: String nach Komma löschen
 
Könnte man es nicht auch als Hinweis auf mögliche Probleme bei allen anderen Lösungen verstehen?

TheAn00bis 21. Jun 2006 10:33

Re: String nach Komma löschen
 
Zitat:

Zitat von Hawkeye219
Könnte man es nicht auch als Hinweis auf mögliche Probleme bei allen anderen Lösungen verstehen?

Welche denn? Du meinst wenn kein Kommata enthalten ist?

Hawkeye219 21. Jun 2006 10:57

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:
s := copy(s,1,pos(',',s));
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.

@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

himitsu 21. Jun 2006 10:58

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:
i := Pos(',', s);
if i > 0 then SetLength(s, i - 1);
Dieses
Delphi-Quellcode:
Delete(s, pos(',', s), Length(s));
sollte zumindestens etwa so aussehn
Delphi-Quellcode:
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));
[add]
@Hawkeye219: das hätte ich jetut och nicht gedacht ._.

Christian Seehase 21. Jun 2006 16:05

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 00:52 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