![]() |
split, aber wie ?
hallo,
ich hab da ein kleineres Problem, hab schon versucht nach anderen Beiträgen zu suchen, zwar auch einige gefunden aber irgendwie steige ich da nicht so ganz durch :) Also: Ich habe ein Edit-Feld und ein record, aus dem record werden daten (int & word) in das edit feld eingegeben:
Delphi-Quellcode:
sooo...nun das eigentliche Problem,
LabeledEditklasse.Text := IntToStr(Schuelerfeld[i].stufe) + ' ' + Schuelerfeld[i].klasse;
ich würde gerne, dass er die im edit-feld geänderten daten nun auch wieder in das record abspeichert. Ich dachte mir das geht mit einem split befehl, ich weiß nur nicht wie. Ich glaube am besten wäre es wenn der split befehl nicht nach lehrzeichen, sondern nach einer zahl btw. vor dem Buchstaben trennt, so wird z.B. "13a" auch erkannt und nicht nur "13 a". kann mir einer helfen ? vielen dank schon mal im vorraus :D |
Re: split, aber wie ?
Hallo,
ich stelle mit das ungefähr so vor:
Delphi-Quellcode:
Grüße
i:=1
found :=false; s:=LabeledEditklasse.Text; while (not found) and (i < length(s)) do begin if s[i] not in ['0'..'9'] then begin found:=true; Schuelerfeld[i].stufe := StrToInt(copy(s,1,i-1)); Schuelerfeld[i].klasse := copy(s,i,length(s)-i); end else inc(i); end; Klaus |
Re: split, aber wie ?
Hier noch ein anderer Ansatz:
Delphi-Quellcode:
Grüße vom marabu
procedure TDemoForm.ButtonClick(Sender: TObject);
var s: String; index, value: Integer; begin s := '13a'; Val(s, value, index); s := Trim(Copy(s, index, MaxInt)); ShowMessage(Format('Klasse %d %s', [value, s])); end; |
Re: split, aber wie ?
Zitat:
delphi versteht die zeile
Delphi-Quellcode:
nicht, und um ehrlich zu sein ich auch nicht :)
if s[i] not in ['0'..'9'] then
schreiben wir das mal aus ...
Delphi-Quellcode:
<- geht das ?
if LabeledEditklasse.Text[1] [...]
------------------------------ Zitat:
Delphi-Quellcode:
so hab ichs erstmal versucht, das %d funktioniert, aber bei %s schmeißt der mir nen error
Val(s, value, index);
s := Trim(Copy(s, index, MaxInt)); LabeledEditnachname.Text := (Format('%d', [value, s])); LabeledEditvorname.Text := (Format('%s', [value, s])); |
Re: split, aber wie ?
da der Code vom Marabu der bessere ist:
Delphi-Quellcode:
zum besseren Verständnis:
Val(s, value, index);
s := Trim(Copy(s, index, MaxInt)); Schuelerfeld[i].stufe := value; Schuelerfeld[i].klasse := s; ShowMessage(Format('Klasse %d %s', [value, s])); %d korrespondiert mit value und stellt einen Dezimalwert dar %s korrespondiert mit s und stellt einen String dar. %d und %s sind keine Variablen, sondern stellen einen Platzhalter in der Formatanweisung dar. und
Delphi-Quellcode:
sollte auch gehen.
if LabeledEditklasse.Text[1] [...]
Grüße Klaus |
Re: split, aber wie ?
super, wunderbar :)
funktioniert genau so wie ich es mir vorgestellt habe :D vielen dank euch beiden :D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:09 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