![]() |
zahl durch ein Zeichen ersetzen ?
Hallo
ich möchte das Zeichen 0 durch x und da Zeichen 1 durch n ersetzen aber nur die letzte 2 Zeichen ss spielt keine Rolle Beispiel : Zahl=000-ss soll Zahl=000-xx Zahl=001-ss soll Zahl=001-xn Zahl=011-ss soll Zahl=011-nn
Delphi-Quellcode:
procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType);
begin Edit1.Text := Format('Zahl=' + '%.3d' + '-' + 'ss', [UpDown1.Position]); end; procedure TForm1.Edit1Change(Sender: TObject); var i: Integer; zeichen: String; begin for i := 6 to 7 do zeichen:=Edit1.Text[i]; if zeichen = '0' then zeichen:='x'; if zeichen = '1' then zeichen:='n'; Edit2.Text:= // das Ergebnis soll in Edit 2 angezeigt werden end; end. |
Re: zahl durch ein Zeichen ersetzen ?
Erstmal fehlen da begin und end. Und es nützt ja nichts, nur das Zeichen zu ersetzen, wenn Du keine Kopie des Originalstrings anlegst :zwinker:
|
Re: zahl durch ein Zeichen ersetzen ?
Zitat:
|
Re: zahl durch ein Zeichen ersetzen ?
Ich warte noch eine weitergehende Erklärung ab, vor einem Schubs in die richtige Richtung.
*Gespanntbin* Sherlock |
Re: zahl durch ein Zeichen ersetzen ?
Ich würde es mal so versuchen :
Delphi-Quellcode:
procedure TForm1.Edit1Change(Sender: TObject);
var i: Integer; zeichen: String; StringVoll : String; begin StringVoll := Edit1.Text; // erstmal kompletten string speichern for i := 6 to 7 do zeichen:=Edit1.Text[i]; if zeichen = '0' then // zeichen im vollenstring ändern StringVoll[i] :='x'; if zeichen = '1' then StringVoll[i] :='n' end; Edit2.Text := StringVoll; // dann geänderter string rausgeben; end; |
Re: zahl durch ein Zeichen ersetzen ?
Was soll denn hier herauskommen?
Zitat:
|
Re: zahl durch ein Zeichen ersetzen ?
neee bei Edit1.Text[1] z.b. kommt das erste zeichen den strings Text :zwinker:
Wenn man sagt
Delphi-Quellcode:
String := 'Hallo';
Test := String[1] //vorausgesetzt beide test und string sind string typ kommt folgendes raus Test := 'H'; |
Re: zahl durch ein Zeichen ersetzen ?
Nochmal, ohne Blockbildung mit begin und end macht die Schleife keinen Sinn, weil "zeichen" immer wieder überschrieben wird. Jetzt klar, was ich meine?
|
Re: zahl durch ein Zeichen ersetzen ?
Ich habe das Problem gelöst :firejump:
aber mit einem lagen Code Also ich möchte nur letzte 2 Zeichen durch bestimmte Buchstaben ersetzen : Vielleicht kann jamand den Code verkürzen :mrgreen:
Delphi-Quellcode:
procedure TForm1.Edit1Change(Sender: TObject);
var //i : Integer; feld1, l1,l2,l3,zeichen1,zeichen2: String; begin feld1:=Edit1.Text; //for i:=0 to 10 do l1 := Feld1[1]; l2 := Feld1[2]; l3 := Feld1[3]; if l2='0' then zeichen1:='a'; if l2='1' then zeichen1:='b'; if l2='2' then zeichen1:='c'; if l2='3' then zeichen1:='d'; if l2='4' then zeichen1:='e'; if l2='5' then zeichen1:='f'; if l2='6' then zeichen1:='g'; if l2='7' then zeichen1:='h'; if l2='8' then zeichen1:='i'; if l2='9' then zeichen1:='j'; // zeichen 2 if l3='0' then zeichen2:='a'; if l3='1' then zeichen2:='b'; if l3='2' then zeichen2:='c'; if l3='3' then zeichen2:='d'; if l3='4' then zeichen2:='e'; if l3='5' then zeichen2:='f'; if l3='6' then zeichen2:='g'; if l3='7' then zeichen2:='h'; if l3='8' then zeichen2:='i'; if l3='9' then zeichen2:='j'; Edit2.Text:='inf=' +l1+l2+l3 + '-' + zeichen1 +zeichen2; end; procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType); begin Edit1.Text := Format('%.3d', [UpDown1.Position]); end; end. |
Re: zahl durch ein Zeichen ersetzen ?
Ich geb' s auf, nochmal sag ich' s nicht :wall:
Zitat:
|
Re: zahl durch ein Zeichen ersetzen ?
Schleife ist nicht mehr gebraucht
deswegen kommt der Code lang :mrgreen: |
Re: zahl durch ein Zeichen ersetzen ?
2 Möglichkeiten:
1. case benutzen 2. ASCII-Tabelle benutzen |
Re: zahl durch ein Zeichen ersetzen ?
3. möglichkeit, 'ne sprungtabelle verwenden... ;-)
aber die wird wohl zu hoch für dich sein :angel: |
Re: zahl durch ein Zeichen ersetzen ?
Delphi-Quellcode:
Nun denk mal drüber nach, was ich hier mache.
if (l1 in ['0'..'9']) then
zeichen := Chr(Ord(l1) + 49); [edit] Was ich ja noch gar nicht erwähnt hatte: Lösch mal den Text aus Edit1 und wundere Dich :mrgreen: [/edit] |
Re: zahl durch ein Zeichen ersetzen ?
Mit deinem Code DadyH bekomme ich hexa Zeichen !
Und wenn das Feld leer ist, bekomme ich Error deswegen versuche ich nur Zahlen zu übernehmen :
Delphi-Quellcode:
procedure TForm1.Edit1Change(Sender: TObject);
var i,l1,l2,l3 : Integer; // diesmal l1 bis l3 als Integer feld1,zeichen1,zeichen2: String; begin feld1:=Edit1.Text; l1 := strToInt(Feld1[1]); l2 := strToInt(Feld1[2]); l3 := strToInt(Feld1[3]); if (l2 in [0..9]) then zeichen1 := Chr(Ord(l2) + 49); // gibt nicht die gewünschte Buchstabe // zeichen 2 ... if (l2) or (l3) <> [0...9] then zeichen1:=''; zeichen2:=''; Edit2.Text:='inf=' +IntToStr(l1) +IntToStr(l2) +IntToStr(l3) + '-' + zeichen1 +zeichen2; end; procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType); begin Edit1.Text := Format('%.3d', [UpDown1.Position]); end; end. |
Re: zahl durch ein Zeichen ersetzen ?
Ob als integer oder nicht, wenn Du das Edit leerst, knallt es. und was sind bitte Hexazeichen?
|
Re: zahl durch ein Zeichen ersetzen ?
Hi,
Zitat:
:mrgreen: Mfg FAlter |
Re: zahl durch ein Zeichen ersetzen ?
Ich möchte nun den Wert in Edit1 nicht von null anfangen
sondern weiter zählen
Delphi-Quellcode:
d.h. wenn ich 555 in edit1 eingebe und klicke auf UpDown1Click dann wird mein Wert gelöscht und fängt er wo er war an !
Edit1.Text := Format('%.3d', [UpDown1.Position]);
oder muss ich die UpDown1Click.position in Form1.Oncreate auch was programmieren :gruebel: |
Re: zahl durch ein Zeichen ersetzen ?
Gibt es bei Dir die Komponentengruppe Beispiele?
Da gibt es nämlich eine Komponente die heisst SpinEdit. Das nimmt Dir glaube ich die Arbeit ab, die Du Dir da machst. Sherlock |
Re: zahl durch ein Zeichen ersetzen ?
Ist es mit Edit.text nicht möglich ?
Nur wenn es möglich ist, kann ich SpinEdit nehmen. Allerdings finde ich in SpinEdit-Eigenschaft in OI keine Möglichkeit um die Pfeilen zu vergrößern ! |
Re: zahl durch ein Zeichen ersetzen ?
Grafisch vergrößern? Mach das ganze Edit größer. Wenns was feineres werden soll, dann musst du halt nach anderen Komponenten suchen, aber Spinedit nennt man sowas, das macht dann die Suche leichter. ;)
Edit: Falls es um den Wert geht, dann schau Dir mal Increment, MaxValue und MinValue an. Sherlock |
Re: zahl durch ein Zeichen ersetzen ?
ich meine die Pfeilen nur
|
Re: zahl durch ein Zeichen ersetzen ?
Hast Du denn Deinem UpDown auch das Edit zugewiesen?
|
Re: zahl durch ein Zeichen ersetzen ?
ja
aber es ist unterschied wenn ich eine Format für SpinEdit zuweise, dann funktioniert nicht und ohne Format läuft !
Delphi-Quellcode:
Edit1.text := Format('%.5d', [UpDown1.Position]); // ok
SpinEdit1.Text := Format('%.5d', [UpDown1.Position]); // nicht ! |
Re: zahl durch ein Zeichen ersetzen ?
Zitat:
rollstuhlfahrer |
Re: zahl durch ein Zeichen ersetzen ?
wie kann ich beim Auslesen meine 0000 wieder wiederherstellen ?
|
Re: zahl durch ein Zeichen ersetzen ?
Mit Format? :roll:
|
Re: zahl durch ein Zeichen ersetzen ?
Lösung gefunden sowohl für Edit.Text als auch für den SpinEdit :firejump:
In Edit1.Text muss nicht nun immer von 0 anfangen
Delphi-Quellcode:
fast aufgegeben :wall:
procedure TForm1.Edit1Change(Sender: TObject);
begin UpDown1.Position := StrToInt(Edit1.Text); // das war's. Mehr nicht // das heisst immer eine neue Position zuweisen (Onchange) |
Re: zahl durch ein Zeichen ersetzen ?
Hi,
wenn das Edit mit dem UpDown vernüpft ist, ergibt das eine Endlosschleife: Edit.Text geändert -> OnChange OnChange setzt UpDown.Position UpDown.Position geändert -> Update von Edit.Text ... Stacküberlauf Hatte ich schon mal. Seit dem setze ich sowas nicht mehr im OnChange. In diesem Fall bezweifle ich immer noch, dass solch eine Verknüpfung besteht (UpDown.Associate). Mfg FAlter |
Re: zahl durch ein Zeichen ersetzen ?
Ich schnall nur gerade absolut nicht, was das mit deiner ursprünglichen Frage zu tun hat. Eventuell wäre es gut, wenn du demnächst etwas allgemeiner dazu schreibst was du überhaupt erreichen willst, weil deine ersten Lösungsansätze meist schon seltsam sind, und die Beschreibungen des Problems nicht wirklich erkennen lassen, wo du mal hin willst. Dann artet es in deinen Threads nicht immer in seitenlanges Gerate aus, und es wäre nur fair den Helfern gegenüber.
|
Re: zahl durch ein Zeichen ersetzen ?
Zitat:
Zitat:
|
Re: zahl durch ein Zeichen ersetzen ?
Hi,
Zitat:
Ergo: Die richtige Antwort war nein. Mfg FAlter |
Re: zahl durch ein Zeichen ersetzen ?
Wenn er die Nachfragen nicht versteht, kann er sie ja hinterfragen, dann kommen trotzdem vermutlich kürzere Threads dabei heraus, weil die Kommunikation einfach besser läuft :wall:
|
Re: zahl durch ein Zeichen ersetzen ?
Hi,
Keine Ahnung was ihr hier alle macht, aber ihr redet glaube ich alle bisschen aneinander vorbei. Da ich wohl Ärger bekomme wenn ich dir jetzt den fertigen Code poste (wohl auch mehr oder weniger zu Recht) werde ich dir jetzt sagen wie du vorgehen musst: :arrow: Schleife von Length(String) downto Length(String)-1 und dann falls das Zeichen[i] eine 0 ist, Zeichen[i] durch ein x ersetzen, wenns eine 1 ist, durch ein n ersetzen. Edit: So habe ich jedenfalls die Frage verstanden :roll: Gruß Neutral General |
Re: zahl durch ein Zeichen ersetzen ?
Fast aufgegeben :wall:
Lösung : S p i n E d i t 1 . T e x t : = F o r m a t ( ' % . 5 d ' , [ S p i n E d i t 1 . V a l u e ] ) ; |
Re: zahl durch ein Zeichen ersetzen ?
Was soll das denn bitte jetzt? Pack das Ding in Code-Tags und schreib es wieder jeder andere auch. :roll:
|
Re: zahl durch ein Zeichen ersetzen ?
Den Grund für das Schließen muss ich wohl nicht äußern - irgendwann ist das Maß voll.
*** GESCHLOSSEN *** |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:26 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