Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Text in 5er Buchstabengruppen anordnen (https://www.delphipraxis.net/149757-text-5er-buchstabengruppen-anordnen.html)

eragon123 29. Mär 2010 15:31


Text in 5er Buchstabengruppen anordnen
 
Ich habe als Ausgang String die Buchstaben enthalten z.B: 'ALDGFHSDKHGIHEBIUHSBIH'. Daraus will ich jetzt 5er Gruppen machen. Wie bekomme ich das hin? Z.B. 'AFJGH AJGHI ALSKD'

Mein Ansatz
Delphi-Quellcode:
beschriftung := lblout.Caption;                                // In 5er Gruppen annordnen
  beschriftung2 := lblin.Caption;
  for i := 0 to Length(lblin.Caption) div 5 do
  begin
    Insert(' ',beschriftung,i*5);
    Insert(' ',beschriftung2,i*5);
  end;
  lblout.Caption := beschriftung;
  lblin.Caption := beschriftung2;
Beschriftung 1 und 2 sind strings.

Klaus01 29. Mär 2010 15:35

Re: Text in 5er Buchstabengruppen anordnen
 
Hallo,

schau Dir mal Delphi-Referenz durchsuchensystem.copy und Delphi-Referenz durchsuchensystem.delete an.

Grüße
Klaus

eragon123 29. Mär 2010 15:42

Re: Text in 5er Buchstabengruppen anordnen
 
Ok hab ich ... was soll mir das jetzt sagen? Würdest du die Sachen einzeln Rauskopieren und dann löschen oder wie ist das gemeint?

Klaus01 29. Mär 2010 15:46

Re: Text in 5er Buchstabengruppen anordnen
 
.. ich weiß ja nicht, ob Du den Ausgangsstring noch behalten willst?
Ich würde immer die ersten 5 Zeichen kopieren und diesen dann aus dem Ausgangsstring löschen.

Ohne zu löschen solltest Du die Start- und Endwerte im Copy nach jedem Copy Vorgang anpassen.

Grüße
Klaus

eragon123 29. Mär 2010 15:53

Re: Text in 5er Buchstabengruppen anordnen
 
Mhm ok neuer Versuch:

Delphi-Quellcode:
  beschriftung := '';                                // In 5er Gruppen annordnen
  beschriftung2 := '';
  for i := 0 to Length(lblin.Caption) div 5 do
  begin
    beschriftung := beschriftung + Copy(lblin.Caption,i*5,5) + ' ';
    beschriftung2 := beschriftung2 + Copy(lblout.Caption,i*5,5) + ' ';
  end;
  lblout.Caption := beschriftung;
  lblin.Caption := beschriftung2;
Macht immer noch Quatsch..

Kann es sein das der lenght Teil nicht den richtigen Wert liefert? Ich stehe gerade echt auf der Leitung :wall: .. bitte um Hilfe.

Klaus01 29. Mär 2010 15:59

Re: Text in 5er Buchstabengruppen anordnen
 
.. wie schaut denn der Quatsch aus?

im String[0] steht die Länge des Strings, nützliche Daten sind erst ab String[1]
da.

Grüße
Klaus

himitsu 29. Mär 2010 16:04

Re: Text in 5er Buchstabengruppen anordnen
 
Zitat:

Zitat von eragon123
Mein Ansatz
Delphi-Quellcode:
beschriftung := lblout.Caption;                                // In 5er Gruppen annordnen
beschriftung2 := lblin.Caption;
for i := 0 to Length(lblin.Caption) div 5 do
begin
  Insert(' ',beschriftung,i*5);
  Insert(' ',beschriftung2,i*5);
end;
lblout.Caption := beschriftung;
lblin.Caption := beschriftung2;

Erstens ein String hat einen 1-basierenden Index. :warn:
for i := 0 to und i*5 ergeben aber als ersten Wert eine 0, also müßte überall +1 hinzu.
Außerdem willst du doch nur gruppieren/unterteilen und dann benötigst du keine Leerzeichen an erster Stelle und unter Umständen auch nicht an letzter Stelle.

Wenn du von Vorne bis Hinten durchgehst und enfügst, dann wird der String um die eingefügten Zeichen Länger (also vor den Einfügestellen) und demnach müßte für jede Einfügung 1 ( i*Length(' ') ) hinzugerechnet werden.

Lösung: von hinten beginnen

Delphi-Quellcode:
for i := 1 do (Length(lblin.Caption) - 1) div 5  do
  //Insert(' ', beschriftung, i * (5 + Length(' ')) + 1);
  Insert(' ', beschriftung, i * 6 + 1);
oder
Delphi-Quellcode:
for i := (Length(lblin.Caption) - 1) div 5 downto 1 do
  Insert(' ', beschriftung, i * 5 + 1);

Zitat:

Zitat von eragon123
Beschriftung 1 und 2 sind strings.

Sind diese auch gleich lang?
Wenn nicht, dann benötogst du 2 Schleifen.

eragon123 29. Mär 2010 16:35

Re: Text in 5er Buchstabengruppen anordnen
 
Achso hab ich vergessen zu sagen ... ja die sind gleich lang.

Habs jetzt mal so übernommen
Delphi-Quellcode:
beschriftung := lblin.Caption;                                // In 5er Gruppen annordnen
  for i := (Length(beschriftung) - 1) div 5 downto 1 do
    Insert(' ', beschriftung, i * 5 + 1);

  lblin.Caption := beschriftung;
Funktioniert aber nicht komplett, obwohl ich deinen Ansatz verstehe (hoffe ich zumindestens :-D ). Was bei rauskommt im Label ist folgendes:

AAAAA

A
A A
AA A
AAA

So in dem Muster ca. Es scheint nur in der ersten Zeile zu funktionieren. Ich weiß nicht wo er da die Zeilenumbrüche her hat. Hab wordwrap auf true... kann das damit zusammenhängen?

p80286 29. Mär 2010 17:04

Re: Text in 5er Buchstabengruppen anordnen
 
Zitat:

Zitat von eragon123
So in dem Muster ca. Es scheint nur in der ersten Zeile zu funktionieren. Ich weiß nicht wo er da die Zeilenumbrüche her hat. Hab wordwrap auf true... kann das damit zusammenhängen?

Jo das kann,
Wann immer es geht: keine Daten aus Memo/RichEdit/edit/Label lesen, da für die Anzeige die Daten modifiziert werden.

Gruß
K-H

eragon123 29. Mär 2010 17:13

Re: Text in 5er Buchstabengruppen anordnen
 
Mhm aber wie soll ich dann den Text verändern?


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:43 Uhr.
Seite 1 von 2  1 2      

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