AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Lazarus (IDE) Wie kann man bei Lazarus in einem Memo alle Zeichen nebeneinander bekommen?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie kann man bei Lazarus in einem Memo alle Zeichen nebeneinander bekommen?

Ein Thema von PaulMaler · begonnen am 30. Okt 2015 · letzter Beitrag vom 30. Okt 2015
Antwort Antwort
PaulMaler

Registriert seit: 30. Okt 2015
5 Beiträge
 
#1

Wie kann man bei Lazarus in einem Memo alle Zeichen nebeneinander bekommen?

  Alt 30. Okt 2015, 18:23
Code:
procedure TForm1.Button3Click(Sender: TObject);
var x:integer; y:string;
begin
  label1.caption:=' ';
  wor:=memo1.text;
  s:=wor;
  memo1.clear;
  for i:=1 to length(s) do
begin
  x:=ord(s[i]);
begin
  If x=69 Then x:=90 Else
  If x=101 Then x:=122 Else
  x:=x
end;
  y:=chr(x);
  Memo1.Lines.strings[0]:=memo1.lines.strings[0]+y;
end;
end
Ich habe ein Programm geschrieben, in dem alle e bzw. E gegen z und Z ausgetauscht werden. Die Ausgabe erfolgt in einem Memo, was soweit auch alles klappt, zumindest, solange der Anfangstext nur eine Zeile lang ist. Sobald der Text mehr als eine Zeile einnimmt, schreibt das Programm einige Wortschnipsel untereinander ins Memo... und irgendwie rückwerts. Vllt hat einer von euch ja eine Idee, wie ich das hinbekommen kann, außer, dass ich die Zeile länger mache. Dankeschön schonmal im Vorraus und falls ihr weitere Infos wollt einfach fragen. Auf dem Bild seht ihr, was ich meine.
Miniaturansicht angehängter Grafiken
dingsda.png  
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

AW: Wie kann man bei Lazarus in einem Memo alle Zeichen nebeneinander bekommen?

  Alt 30. Okt 2015, 18:29
Bei Delphi hat das Memo ein Attribut WordWrap. Ist dieses = true, so macht das Memo, sobald eine Zeile "voll" ist, selbständig einen Zeilenumbruch.

Sollte es diese Attribut unter Lazarus auch geben, so setze es mal auf false, dann sollte der automatische Zeilenumbruch entfallen.
  Mit Zitat antworten Zitat
PaulMaler

Registriert seit: 30. Okt 2015
5 Beiträge
 
#3

AW: Wie kann man bei Lazarus in einem Memo alle Zeichen nebeneinander bekommen?

  Alt 30. Okt 2015, 18:42
Also an sich klappt das so, aber das ist dann ja wieder komplett ohne Zeilenumbrüche und es soll aber alles untereinander geschrieben sein. Praktisch soll es wie bei einer ganz normalen Word Seite aussehen. Geht das irgendwie? Ansonsten nehm ich auch das. Danke dafür auf jeden Fall.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#4

AW: Wie kann man bei Lazarus in einem Memo alle Zeichen nebeneinander bekommen?

  Alt 30. Okt 2015, 19:03
Benutze doch einfach SelText:
Delphi-Quellcode:
procedure TForm1.BtnE2ZClick(Sender: TObject);
Var
  i : Intgeger;
  
begin
  For i := 0 To Length(MyMemo.Text) -1 Do
  Begin
    MyMemo.SelStart := i;
    MyMemo.SelLength := 1;
    If MyMemo.SelText = 'EThen MyMemo.SelText := 'Z';
    If MyMemo.SelText = 'eThen MyMemo.SelText := 'z';
  End;
end;
Oder mit dem Text-String direkt (Achtung: Hier hat das erste zeichen den Index 1):
Delphi-Quellcode:
procedure TForm1.BtnE2ZClick(Sender: TObject);
Var
  i : Intgeger;
  
begin
  For i := 1 To Length(MyMemo.Text) Do
  Begin
    If MyMemo.Text[i] = 'E' MyMemo.Text[i] := 'Z';
    If MyMemo.Text[i] = 'e' MyMemo.Text[i] := 'z';
  End;
end;
Oder noch einfacher mit ReplaceStr aus der Unit StrUtils:
Delphi-Quellcode:
procedure TForm1.BtnE2ZClick(Sender: TObject);
Var
  i : Intgeger;
  
begin
  MyMemo.Text := StrUtils.ReplaceStr(MyMemo.Text,'E','Z');
  MyMemo.Text := StrUtils.ReplaceStr(MyMemo.Text,'e','z');
end;
Ob's ReplaceStr unter Lazarus gibt, vermag ich jetzt nicht zu beantworten.

Geändert von Perlsau (30. Okt 2015 um 19:11 Uhr)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

AW: Wie kann man bei Lazarus in einem Memo alle Zeichen nebeneinander bekommen?

  Alt 30. Okt 2015, 19:06
Wenn Du immer in die Zeile 0 schreibst, ist das Ergebnis auch immer in der Zeile 0.

Mir ist nicht klar, was Du da machen willst:
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var x:integer; y:string;
begin
  label1.caption := ' ';
  wor := memo1.text;
  s := wor;
  memo1.clear;
  for i:=1 to length(s) do begin // wo ist i definiert?
    x:=ord(s[i]);
    begin
      If x=69 Then x:=90 Else
      If x=101 Then x:=122 Else
      x:=x; // sittlicher Nährwert?
    end;
    y:=chr(x);
    Memo1.Lines.strings[0]:=memo1.lines.strings[0]+y;
  end;
end;
Meinst Du eventuell sowas?
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var x:integer; y:string;
    i, k : Integer;
    s : String;
    t : String;
begin
  label1.caption := ' ';
  for k := 0 to memo1.lines.count - 1 do begin
    s := memo1.lines[k];
    t := '';
    for i := 1 to length(s) do begin
      x := ord(s[i]);
      If x = 69 Then x := 90 Else
      If x = 101 Then x := 122;
      t := t + chr(x);
    end;
    Memo1.Lines[k] := t;
  end;
end;
(nur hingedaddelt und nicht getestet)
  Mit Zitat antworten Zitat
PaulMaler

Registriert seit: 30. Okt 2015
5 Beiträge
 
#6

AW: Wie kann man bei Lazarus in einem Memo alle Zeichen nebeneinander bekommen?

  Alt 30. Okt 2015, 19:22
Jetzt gehts, vielen vielen Dank. Ich weiß zwar nicht wirklich was mit dem
Code:
memo1.lines.count - 1
anzufangen, aber dafür mach ich das wohl auch noch nicht lange genug. Auf jeden Fall danke dafür.
  Mit Zitat antworten Zitat
PaulMaler

Registriert seit: 30. Okt 2015
5 Beiträge
 
#7

AW: Wie kann man bei Lazarus in einem Memo alle Zeichen nebeneinander bekommen?

  Alt 30. Okt 2015, 19:27
Wo ich gerade die ganzen superantworten hier sehe sollte ich vllt erwähnen, dass das nur schulisches Programmieren ist. Mit den ganzen Möglichkeiten von denen hier momentan die Rede ist, kann ich halt echt noch nicht viel anfangen, aber das kommt auch noch. Davon abgesehen, dass ich das mehr in meiner Freizeit mache als in der Schule und die Schüler gerade so mit den Edit Fenstern und Buttons umgehen können... Danke auf jeden Fall für eure Hilfe. Je mehr man macht, jemehr lernt an. Und vor allem immer Neues.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#8

AW: Wie kann man bei Lazarus in einem Memo alle Zeichen nebeneinander bekommen?

  Alt 30. Okt 2015, 21:02
Jetzt gehts, vielen vielen Dank. Ich weiß zwar nicht wirklich was mit dem
Code:
memo1.lines.count - 1
anzufangen, aber dafür mach ich das wohl auch noch nicht lange genug. Auf jeden Fall danke dafür.
Wenn du durch eine Liste – wie z.B. die Stringliste Lines eines TMemos – iterierst, mußt du darauf achten, ob die Zählung bei 0 oder bei 1 beginnt. Bei Strings beginnt die Zählung immer bei 1. Bei Listen hat das erste Item immer den Index 0. Wenn du daher Count einer Stringliste abfragst und z.B. 100 als Resultat erhältst, dann geht der Index der Liste von 0-99, und deshalb mußt du beim Count 1 abziehen, sonst referenzierst du im letzten Durchlauf der Schleife einen Index, den es gar nicht gibt, und das führt zu einer Zugriffsverletzung.
  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 18:51 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