AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

split, aber wie ?

Offene Frage von "theNick"
Ein Thema von theNick · begonnen am 7. Aug 2006 · letzter Beitrag vom 7. Aug 2006
Antwort Antwort
theNick

Registriert seit: 22. Mär 2006
15 Beiträge
 
#1

split, aber wie ?

  Alt 7. Aug 2006, 14:15
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:
LabeledEditklasse.Text := IntToStr(Schuelerfeld[i].stufe) + ' ' + Schuelerfeld[i].klasse; sooo...nun das eigentliche Problem,
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
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: split, aber wie ?

  Alt 7. Aug 2006, 14:23
Hallo,

ich stelle mit das ungefähr so vor:
Delphi-Quellcode:
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;
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: split, aber wie ?

  Alt 7. Aug 2006, 14:26
Hier noch ein anderer Ansatz:

Delphi-Quellcode:
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;
Grüße vom marabu
  Mit Zitat antworten Zitat
theNick

Registriert seit: 22. Mär 2006
15 Beiträge
 
#4

Re: split, aber wie ?

  Alt 7. Aug 2006, 16:15
Zitat von Klaus01:
Hallo,

ich stelle mit das ungefähr so vor:
Delphi-Quellcode:
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;
Grüße
Klaus
hab das gerade mal ausprobiert,
delphi versteht die zeile if s[i] not in ['0'..'9'] then nicht, und um ehrlich zu sein ich auch nicht
schreiben wir das mal aus ... if LabeledEditklasse.Text[1] [...] <- geht das ?

------------------------------

Zitat:
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;
hab ich auch gerade getestet, sieht schon ganz gut aus, aber wie kann ich %d und %s einzeln abrufen ?
Delphi-Quellcode:
  Val(s, value, index);
  s := Trim(Copy(s, index, MaxInt));
  LabeledEditnachname.Text := (Format('%d', [value, s]));
  LabeledEditvorname.Text := (Format('%s', [value, s]));
so hab ichs erstmal versucht, das %d funktioniert, aber bei %s schmeißt der mir nen error
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: split, aber wie ?

  Alt 7. Aug 2006, 16:34
da der Code vom Marabu der bessere ist:

Delphi-Quellcode:
Val(s, value, index);
s := Trim(Copy(s, index, MaxInt));
Schuelerfeld[i].stufe := value;
Schuelerfeld[i].klasse := s;
zum besseren Verständnis:

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
if LabeledEditklasse.Text[1] [...] sollte auch gehen.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
theNick

Registriert seit: 22. Mär 2006
15 Beiträge
 
#6

Re: split, aber wie ?

  Alt 7. Aug 2006, 16:46
super, wunderbar
funktioniert genau so wie ich es mir vorgestellt habe
vielen dank euch beiden
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:43 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