Delphi-PRAXiS
Seite 2 von 2     12   

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)

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 12:04 Uhr.
Seite 2 von 2     12   

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