Guten Tag Herr Christian,
die Funktion 'PosEx', auf die Herrn Kurosinskis Beitrag verweist, scheint im Report-Generator nicht als 'vorgefertigte' Funktion verfügbar zu sein. Bezogen auf Ihr Beispiel "asdf,123,qwerdasd" sehe ich zwei einfache Möglichkeiten (s. Beispielreports im Anhang; die Teilstrings werden zeilenweise in ein Memo-Feld geschrieben). Für den Fall, dass mit TStringList gearbeitet wird, müssen die Teilstrings strikt kommasepariert vorliegen; ggf. vorhandene Leerzeichen sollten für die Listenelemente durch ein anderes ersetzt und später wieder eingefügt werden.
Absolute Häufigkeit und Datenvergleich
Moderatoren: Raffenberg, A. Schüller, Pfotenhauer
-
- Beiträge: 415
- Registriert: Montag 3. Dezember 2018, 18:43
- Schulform: WbK (a. D.)
Re: Absolute Häufigkeit und Datenvergleich
- Dateianhänge
-
- StringRipTStringList.rtm
- (7.25 KiB) 26-mal heruntergeladen
-
- StringRip_haystack.rtm
- (6.88 KiB) 29-mal heruntergeladen
Grüße aus Bochum
Christoph Sprung
Christoph Sprung
-
- Beiträge: 85
- Registriert: Donnerstag 21. Januar 2021, 07:52
- Schulform: Förderschule
Re: Absolute Häufigkeit und Datenvergleich
Vielen Dank, das schaue ich mir an.
Viele Grüße
Malte Christian
Malte Christian
- wschrewe
- Fachberater*in
- Beiträge: 1698
- Registriert: Dienstag 25. September 2018, 17:36
- Schulform: BK (Pensionär)
- Kontaktdaten:
Re: Absolute Häufigkeit und Datenvergleich
Sie könnten. z.B. eine globale Funktion definieren:
Ein Aufruf könnte dann so aussehen:
Code: Alles auswählen
function SubstrAtPos(const aString: String; const SepChar: string; const TokenNum: Integer): String;
var
lToken : String;
lTokenNum : Integer;
lSepCharPos : Integer;
begin
Result:=aString;
if Result = '' then Exit;
if Result[Length(Result)] <> SepChar then Result:=Result + SepChar;
lTokenNum:=0;
repeat
lSepCharPos := Pos(SepChar,Result);
lTokenNum:=lTokenNum + 1;
if lSepCharPos > 0 then begin
lToken:=Copy(Result, 1, lSepCharPos - 1);
Delete(Result, 1, lSepCharPos);
end;
until (lTokenNum = TokenNum) or (Result = '');
if lTokenNum = TokenNum then
Result := lToken
else
Result:=''
end;
Code: Alles auswählen
var
lPos : integer;
lStr : String;
begin
lStr:=SubstrAtPos('asdf,123,qwerdasd',',',2)
// liefert '123';
//Oder in einer Schleife alle Substrings auslesen:
lPos:=1;
lStr:=SubstrAtPos('asdf,123,qwerdasd',',',lPos);
while lStr <> '' do begin
// Mache irgendwas mit lStr
// ...
// ...
lPos:=lPos + 1;
lStr:=SubstrAtPos('asdf,123,qwerdasd',',',lPos);
end;
end;
Mit freundlichen Grüßen
Walter Schrewe
"If all else fails, read the instructions" (Donald E. Knuth, letzter TeX - Hilfehinweis)
Walter Schrewe
"If all else fails, read the instructions" (Donald E. Knuth, letzter TeX - Hilfehinweis)