Automatisch Leerzeichen in Edit-Feld einfügen

Für Fragen von Einsteigern und Programmieranfängern...
L4Z4RUSN00B
Beiträge: 9
Registriert: Mo 17. Aug 2015, 13:07
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Automatisch Leerzeichen in Edit-Feld einfügen

Beitrag von L4Z4RUSN00B »

Hi,
ich bräuchte ganz dringend die Hilfe von erfahreneren Lazarus-Nutzern.
Wir bearbeiten im Unterricht gerade die Aufgaben vom 34. Bundeswettbewerb der Informatik und für eine Aufgabe würde ich gerne in einem Edit-Feld nach jedem Zeichen ein Leerzeichen automatisch einfügen, um die einzelnen eingegeben Zahlen im Verlauf des Programms besser sichtbar und erkennbar zu machen. Leider fehlt mir dazu das Wissen wie man überhaupt per Quelltext ein Leerzeichen einfügt.

MfG,
L4Z4RUSN00B
"Ich weiß, dass ich nichts weiß!" - Sokrates

Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Re: Automatisch Leerzeichen in Edit-Feld einfügen

Beitrag von Komoluna »

um ein einzelnes Zeichen aus einem String auszulesen kannst du das hier verwenden:

Code: Alles auswählen

zeichen := deinstring[x];
x muss zwischen 1 und der länge des strings liegen.

Dann brauchst du nurnoch eine for schleife die alle zeichen durchgeht und immer das entsprechende zeichen und ein leerzeichen einfügt.

MFG

Komoluna
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

L4Z4RUSN00B
Beiträge: 9
Registriert: Mo 17. Aug 2015, 13:07
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Automatisch Leerzeichen in Edit-Feld einfügen

Beitrag von L4Z4RUSN00B »

Danke schonmal für die Antwort, aber das ist nicht ganz das was ich suche :( , das mit dem auslesen wollte ich anders angehen.
Hast du eine Idee wie einfach das Programm immer nachdem man eine Zahl eingibt ein Leerzeichen automatisch einfügt?
"Ich weiß, dass ich nichts weiß!" - Sokrates

baumina
Beiträge: 152
Registriert: Mo 3. Feb 2014, 14:07
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Automatisch Leerzeichen in Edit-Feld einfügen

Beitrag von baumina »

Also im Prinzip kann man sowas in das Ereignis "OnKeyUp" packen, allerdings musst du bedenken, dass man in Editfelder auch von der Zwischenablage reinkopieren kann oder Zeichen wieder gelöscht werden können. Deswegen würde ich den String aus dem Eingabefeld erst dann manipulieren, wenn er verarbeitet werden soll.
.

SoE
Beiträge: 84
Registriert: Mo 31. Aug 2015, 01:51

Re: Automatisch Leerzeichen in Edit-Feld einfügen

Beitrag von SoE »

...Edit-Feld nach jedem Zeichen ein Leerzeichen automatisch einfügen...

Code: Alles auswählen

 
Procedure TForm1.Edit1KeyPress(Sender: TObject; Var Key: Char);
 Begin
  If Pos(Key,'1234567890'+#8#27#13) = 0 Then Key:= #0;
 
  If Pos(Key,'1234567890') > 0
  Then
   Begin
    Edit1.Text:= #32 + Edit1.Text;
   End;
 End; 
 
Hast du eine Idee wie einfach das Programm immer nachdem man eine Zahl eingibt ein Leerzeichen automatisch einfügt?

Code: Alles auswählen

 
Procedure TForm1.Edit1KeyPress(Sender: TObject; Var Key: Char);
 Begin
  If Pos(Key,'1234567890'+#8#13) = 0 Then Key:= #0;
 
  If Key = #13  //AutoSelect(False) im ObjektInspektor !
  Then
   Begin
    If Edit1.Text = '' Then Exit;
    If Edit1.Text[1] = ' ' Then Exit;
    Edit1.Text:= #32 + Edit1.Text;
   End;
 End;   
 

Mathias
Beiträge: 6918
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Automatisch Leerzeichen in Edit-Feld einfügen

Beitrag von Mathias »

um die einzelnen eingegeben Zahlen im Verlauf des Programms besser sichtbar und erkennbar zu machen.
Wieso nimmst du nicht eine andere Schrift, oder machst die Zeichen grösser ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Re: Automatisch Leerzeichen in Edit-Feld einfügen

Beitrag von Komoluna »

Außerdem wäre erstmal wichtig ob du nach jeder Zahl oder jeder Ziffen ein Leerzeichen haben willst

MFG

Komoluna
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

L4Z4RUSN00B
Beiträge: 9
Registriert: Mo 17. Aug 2015, 13:07
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Automatisch Leerzeichen in Edit-Feld einfügen

Beitrag von L4Z4RUSN00B »

@baumina: Das wäre auch ne Idee.
@komoluna: Es sollen nur Zahlen eingebbar sein, da ich Koordinaten brauche, und die bestehen nunmal aus Zahlen.
@Mathias: Davon erkennt man aber man die einzelnen Zahlen nich.
"Ich weiß, dass ich nichts weiß!" - Sokrates

TBug
Beiträge: 179
Registriert: Mi 2. Sep 2015, 11:09
OS, Lazarus, FPC: Lazaurus 2.2.4 FPC 3.2.2
CPU-Target: Windows 32/64bit

Re: Automatisch Leerzeichen in Edit-Feld einfügen

Beitrag von TBug »

L4Z4RUSN00B hat geschrieben:@komoluna: Es sollen nur Zahlen eingebbar sein, da ich Koordinaten brauche, und die bestehen nunmal aus Zahlen.
Was ist für Dich eine Zahl?

Zahlen sind zum Beispiel:
2
12
583
1000489

Und eine Zahl besteht aus 1 oder mehreren Ziffern.

Also nochmals die Frage willst Du nach jeder Zahl oder jeder Ziffer ein Leerzeichen?


.

baumina
Beiträge: 152
Registriert: Mo 3. Feb 2014, 14:07
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Automatisch Leerzeichen in Edit-Feld einfügen

Beitrag von baumina »

Wenn ich mir die Aufgabenstellung so anschaue, ist das mit den Leerstellen zur Darstellung oder Eingabe eher unwichtig.
Dateianhänge
aufgabe.jpg
aufgabe.jpg (35.33 KiB) 3004 mal betrachtet
.

wp_xyz
Beiträge: 5153
Registriert: Fr 8. Apr 2011, 09:01

Re: Automatisch Leerzeichen in Edit-Feld einfügen

Beitrag von wp_xyz »

baumina hat geschrieben:Wenn ich mir die Aufgabenstellung so anschaue, ist das mit den Leerstellen zur Darstellung oder Eingabe eher unwichtig.
Das sieht so aus, als ob die Zahlen die Kanten-Koordinaten der gezeigten Rechtecke wären, und dann sind die Leerstellen zur Trennung der einzelnen Zahlen absolut notwendig.

baumina
Beiträge: 152
Registriert: Mo 3. Feb 2014, 14:07
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Automatisch Leerzeichen in Edit-Feld einfügen

Beitrag von baumina »

Ich persönlich würde 4 Eingabefelder mit einem vernünftigen Prompt davor machen.
.

MitjaStachowiak
Lazarusforum e. V.
Beiträge: 395
Registriert: Sa 15. Mai 2010, 13:46
CPU-Target: 64 bit
Kontaktdaten:

Re: Automatisch Leerzeichen in Edit-Feld einfügen

Beitrag von MitjaStachowiak »

Hallo,
hatte vor kurzem das gleiche Problem: Eine lange Folge von Zeichen (Key für Shamir Secret Sharing) soll in 4-er Blocks übersichtlich dargestellt werden:

Code: Alles auswählen

procedure TFormStart.InputChange(Sender: TObject);
var
  s   : AnsiString;
  i,j : Integer;
  p   : TPoint;
begin
 // EditShare = Sender  ;-)
 p := EditShare.CaretPos;
 s := '';
 j := 0;
 for i := 1 to Length(EditShare.Text) do if (EditShare.Text[i] = ' ') then begin
  if (i < p.x+1) then p.x := p.x - 1;
 end else begin
  s := s + EditShare.Text[i];
  j := j + 1;
  if (j mod 4 = 0) then begin
   s := s + ' ';
   if (Length(s) < p.x+2) then p.x := p.x + 1;
  end;
 end;
 EditShare.Text := s;
 EditShare.CaretPos := p;
end; 
EditShare ist ein TEdit, das dieses Special unterstützen soll. Man setze jetzt EditShare.OnChange := @InputChange;

Ganz trivial ist das ganze nicht, es kann leicht vorkommen, dass bei der Eingabe die Position des Textcursors verrutscht. Meine Lösung hat aktuell noch den Nachteil, dass man beim Löschen mit Return nicht über ein Leerzeichen springen kann...

wp_xyz
Beiträge: 5153
Registriert: Fr 8. Apr 2011, 09:01

Re: Automatisch Leerzeichen in Edit-Feld einfügen

Beitrag von wp_xyz »

Ich verstehe die ganze Fragestellung des OP nicht: Wenn wie in der oben von baumina zitierten Aufgabenstellung vier Zahlen (nicht Ziffern) als Koordinaten eines Rechtecks in ein Edit-Feld eingegeben werden und dabei durch Leerzeichen getrennt werden sollen, kann man doch nicht nach jedem *Zeichen* (siehe 1.Post) ein Leerzeichen einfügen, und schon gar nicht automatisch. Was ist, wenn die rechte Rechteckkante bei x=10 liegen soll?

MitjaStachowiak
Lazarusforum e. V.
Beiträge: 395
Registriert: Sa 15. Mai 2010, 13:46
CPU-Target: 64 bit
Kontaktdaten:

Re: Automatisch Leerzeichen in Edit-Feld einfügen

Beitrag von MitjaStachowiak »

Ja, ok, ich wusste nicht, dass die Leerzeichen mehr als nur Design sein sollen...
Zum Trennen von Datenpunkten sollte man ; | / : oder tab verwenden - oder besser gleich getrennte Edits.
[Edit:] Naja, Leerzeichen gehen auch, aber die Aufgabe ist dann eben die Interpretation dieses Datenformats und keine automatische Aufhübschung :mrgreen:

Antworten