![]() |
An bestimmter Stelle eines Strings einen Wert setzen
Hallo zusammen
Ich habe einen String der sieht so aus: ;;;;;;;;;; (also 10 Semikolons) Wie kann ich nun z.B: an der 5 bis 8 Stelle einen Wert einfüllen? Also ich möchte am 5. Trennzeichen den Wert 100 setzen: ;;;;100;;;;; Danach an 6. Stelle den Wert 200: ;;;;100;200;;;; usw. Gibt es da schon eine Funktion in Delphi, die das kann? Vielen Dank für die Hilfe! Grüsse vom Bodensee (30Grad Celsius) ;-) |
Re: An bestimmter Stelle eines Strings einen Wert setzen
Habe mir jetzt selber geholfen... Habe eine Funktion SetPiece geschrieben:
Vielleicht könnt Ihr diese auch mal gebrauchen...
Delphi-Quellcode:
function SetPiece(S: string; D: Char; i: Integer; ReplaceString: string): string;
var Count, Position, EndPosition: Integer; Stop: Boolean; NewString: string; begin NewString := ''; Count := 1; Stop := (Count >= i); while not Stop do begin Position := Pos(D, S); if Position > 0 then begin NewString := NewString + Copy(S, 1, Position); Delete(S, 1, Position) end else begin S := ''; Stop := True; end; Count := Count + 1; if Count = i then Stop := True; end; EndPosition := Pos(D, S); if EndPosition = 0 then EndPosition := Length(S) else EndPosition := EndPosition - 1; Result := Copy(S, 1, EndPosition); Result := NewString + ReplaceString + Copy(S, Length(Result) + 1, Length(S)) end; |
Re: An bestimmter Stelle eines Strings einen Wert setzen
Hättest auch Insert nehmen können. Aber warum einfach ....
|
Re: An bestimmter Stelle eines Strings einen Wert setzen
Danke... ;-))
Ich kannte Insert nicht, aber es führt nicht so einfach zum Ergebnis wie meine Funktion... ;-)) Ich kann meine Funktion z.B so aufrufen: Mystring :=';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;'; SetPiece(MyString, ';', 20, '100'); und schon habe ich an der 20. Stelle meines Trennzeichen den Wert 100. Trotzdem vielen Dank. |
Re: An bestimmter Stelle eines Strings einen Wert setzen
Zitat:
Delphi-Quellcode:
:wiejetzt:
Insert(s,'100',20);
|
Re: An bestimmter Stelle eines Strings einen Wert setzen
Ja, klar, haste Recht. Die Position eines bestimmten Trennzeichen muss man natürlich erst ermitteln. Aber dafür bräuchtest du nur eine max. 2-zeilige Schleife, denk ich mal.
|
Re: An bestimmter Stelle eines Strings einen Wert setzen
Zitat:
|
Re: An bestimmter Stelle eines Strings einen Wert setzen
... was aber nix ausmaacht, wenn man von hinten beginnt, die Werte einzufügen. Man könnte die Werte aber auch erst ganz am Ende der Verarbeitung zu einem CSV-String zusammensetzen, dann erübrigt sich das Einfügen.
|
Re: An bestimmter Stelle eines Strings einen Wert setzen
Hallo Jerry,
wenn deine Strings CSV-konform sind, dann funktioniert auch sowas:
Delphi-Quellcode:
Grüße vom marabu
function SetValue(const aLine, aValue: string; aIndex: Cardinal;
aDelimiter: Char = ','; aQuoteChar: Char = '"'): string; begin with TStringList.Create do try Delimiter := aDelimiter; QuoteChar := aQuoteChar; DelimitedText := aLine; if aIndex = Count then Add(aValue) else Strings[aIndex] := aValue; Result := DelimitedText; finally Free; end; end; Nachtrag: Sonderbehandlung für letzten Value eingeführt, zu große Indexwerte werfen eine Exception. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:12 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-2025 by Thomas Breitkreuz