AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Zeichen in Memo ersetzten und Formatierung beibehalten?!
Thema durchsuchen
Ansicht
Themen-Optionen

Zeichen in Memo ersetzten und Formatierung beibehalten?!

Ein Thema von Rawsche · begonnen am 14. Aug 2018 · letzter Beitrag vom 16. Aug 2018
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.557 Beiträge
 
Delphi 12 Athens
 
#1

AW: Zeichen in Memo ersetzten und Formatierung beibehalten?!

  Alt 14. Aug 2018, 18:06
Außerdem 1 bis Count oder wohl eher 0 bis Count-1,
aber 0 bis Count ist definitiv falsch.

Wobei ihr froh sein könnt, dass Memo zufällig keine Exception wirft, wenn man auf nichtexistierende Zeilen zugreift. (gibt da nur einen Leerstring raus)

#13#10 = sLineBreak


Und wie Lucke ebenfalls nochmal erwähnte:
Wie sieht der restliche Code aus?
Denn die genannten Fehlermeldungen kommen nicht aus dem gezeigten Codestück.




@Delphi.Narium:
Falsch, Memo1.Lines.Text ist schneller, denn Delphi (und bestimmt auch Lazarus) leiten das direkt an das Memo und holen den kompletten Text mit Einmal ab oder weisen ihn direkt zu,
genau so wie bei Memo.Text

Der Zugriff auf Einzelzeilen (Lines[]) ist langsam, vor allem beim Ändern und wenn viel Text im Memo steht.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (14. Aug 2018 um 18:12 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Zeichen in Memo ersetzten und Formatierung beibehalten?!

  Alt 14. Aug 2018, 18:47
Hab Fehler gefixt, Danke himitsu.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Rawsche

Registriert seit: 18. Jul 2018
16 Beiträge
 
#3

AW: Zeichen in Memo ersetzten und Formatierung beibehalten?!

  Alt 14. Aug 2018, 21:03
Ich werde mal die Karten komplett offen auf den Tisch legen. Bitte nicht lachen, falls ihr eine bessere Methode kennt, aber ich versuche in ein Programm eine Art Verschlüsselung einzubauen und habe daher zu Testzwecken das folgende Programm geschrieben.

Delphi-Quellcode:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Grids,
  StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    ListBox1: TListBox;
    ListBox2: TListBox;
    Memo1: TMemo;
    Memo2: TMemo;
    Memo3: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    procedure Coding(var x: string);
    procedure Decoding(var x: string);

  public

  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Coding(var x:string);
var i:integer;
begin
  for i:=0 to listbox1.items.count-1 do
  if x=listbox1.items[i] then x:=listbox2.items[i];
end;

procedure TForm1.Decoding(var x:string);
var i:integer;
begin
  for i:=0 to listbox2.items.count-1 do
  if x=listbox2.items[i] then x:=listbox1.items[i]
end;

procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
  x:string ;
begin
      for i:=1 to Length(Memo1.lines.text) do
      begin
        x:=coding(memo1.lines.Strings[i]);
        memo2.lines.Strings[i]:=x;
      end;
end;

end.
Anbei noch ein Bild meines Formulares.

Ich hoffe euch wird klar, was ich mir gedacht hatte. Ich würde, auch wenn es vielleicht einfacher geht, ungern anders vorgehen, weil ich gerade erst ins Verschlüsseln eingestiegen bin und gerne mit Tausch-Chiffrierung beginnen möchte.

Ich freue mich auf eure Ideen. Bitte berichtigt NICHT einfach den Code, sondern gebt mir vielleicht lieber Tipps, wie ich ihn selbst verbessern kann. Sonst lerne ich daraus leider nichts...


LG und Danke für die schon jetzt zahlreichen Antworten
Rawsche
Angehängte Grafiken
Dateityp: jpg Vorschau.jpg (191,6 KB, 20x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: Zeichen in Memo ersetzten und Formatierung beibehalten?!

  Alt 14. Aug 2018, 21:05
Und wieder fehlt der entscheidende Code: coding.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Rawsche

Registriert seit: 18. Jul 2018
16 Beiträge
 
#5

AW: Zeichen in Memo ersetzten und Formatierung beibehalten?!

  Alt 15. Aug 2018, 12:39
Schonmal Vielen Dank
  Mit Zitat antworten Zitat
API

Registriert seit: 18. Apr 2004
637 Beiträge
 
#6

AW: Zeichen in Memo ersetzten und Formatierung beibehalten?!

  Alt 15. Aug 2018, 13:34
...
  Mit Zitat antworten Zitat
Rawsche

Registriert seit: 18. Jul 2018
16 Beiträge
 
#7

AW: Zeichen in Memo ersetzten und Formatierung beibehalten?!

  Alt 15. Aug 2018, 13:51
Hi,

bis auf ein kleines Problem habe ich Fortschritte gemacht. Ich bin auf Funktionen umgestiegen. Der Text lässt sich umwandeln und auch wieder zurückwandeln.

Ein Problem tritt nur auf. Bei mir wird in der Verschlüsselung jedes Leerzeichen durch ein ß ersetzt. Jedes ß wird zum Leerzeichen.
Bei der Entschlüsselung ist es umgekehrt. Soweit alles geplant.

Leider tritt bei jeder Umwandlung von einem ß ein Fehler auf. Das ß wird nicht durch ein Leerzeichen ersetzt, sondern es bleibt ein ß, egal ob Ver- oder Entschlüsselung. Kann es sein, dass ein ß nicht mit einem ß verglichen werden kann oder dass ein bestehendes ß nicht durch ein Leerzeichen ersetzt werden kann?

Vielen Dank


Delphi-Quellcode:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Grids,
  StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    Label2: TLabel;
    ListBox1: TListBox;
    ListBox2: TListBox;
    Memo1: TMemo;
    Memo2: TMemo;
    Memo3: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    function Coding(x: string): string;
    function Decoding(x: string): string;

  public

  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

function TForm1.Coding(x: string): string;
var
  i: integer;
  y: string;
begin
  y := x;
  for i := 0 to listbox1.items.Count - 1 do
  begin
    if x = listbox1.items[i] then
    begin
      y := listbox2.items[i];
    end;
  end;

  Result := y;
end;

function TForm1.Decoding(x: string): string;
var
  i: integer;
  y: string;
begin
  y := x;
  for i := 0 to listbox2.items.Count - 1 do
  begin
    if x = listbox2.items[i] then
    begin
      y := listbox1.items[i];
    end;
  end;

  Result := y;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
  i2: integer;
  x: string;
begin
  label2.Caption := '';
  memo2.Clear;
  for i := 0 to (Memo1.Lines.Count - 1) do
  begin
    label1.Caption := memo1.Lines.strings[i];
    for i2 := 1 to length(label1.Caption) do
    begin
      x := label1.Caption[i2];
      x := coding(x);
      label2.Caption := label2.Caption + x;

    end;
    memo2.Lines[i] := (label2.Caption);
    label2.Caption := '';
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  i: integer;
  i2: integer;
  x: string;
begin
  label2.Caption := '';
  memo3.Clear;
  for i := 0 to (Memo2.Lines.Count - 1) do
  begin
    label1.Caption := memo2.Lines.strings[i];
    for i2 := 1 to length(label1.Caption) do
    begin
      x := label1.Caption[i2];
      x := decoding(x);
      label2.Caption := label2.Caption + x;

    end;
    memo3.Lines[i] := (label2.Caption);
    label2.Caption := '';
  end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  if edit1.text='ßthen showmessage('');
end;

end.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.757 Beiträge
 
Delphi 12 Athens
 
#8

AW: Zeichen in Memo ersetzten und Formatierung beibehalten?!

  Alt 14. Aug 2018, 21:14
Und wieder fehlt der entscheidende Code: coding.
Wieso?
Delphi-Quellcode:
procedure TForm1.Coding(var x:string);
var i:integer;
begin
  for i:=0 to listbox1.items.count-1 do
  if x=listbox1.items[i] then x:=listbox2.items[i];
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

AW: Zeichen in Memo ersetzten und Formatierung beibehalten?!

  Alt 14. Aug 2018, 22:01
Und wieder fehlt der entscheidende Code: coding.
Wieso?
Delphi-Quellcode:
procedure TForm1.Coding(var x:string);
var i:integer;
begin
  for i:=0 to listbox1.items.count-1 do
  if x=listbox1.items[i] then x:=listbox2.items[i];
end;
Ups. Ich hatte eine Methode gesucht, die was mit einem String "macht", eben codiert, wie auch imner, und nicht irgendwelchen Code der was mit VCL Steuerelementen macht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.757 Beiträge
 
Delphi 12 Athens
 
#10

AW: Zeichen in Memo ersetzten und Formatierung beibehalten?!

  Alt 14. Aug 2018, 21:21
OK, hier läuft was falsch:
Delphi-Quellcode:
      for i:=1 to Length(Memo1.lines.text) do
      begin
        x:=coding(memo1.lines.Strings[i]);
        memo2.lines.Strings[i]:=x;
      end;
Memo1.Lines.Text gibt den gesamten Text inklusive Zeilenumbrüche zurück. Memo1.lines.Strings[i] gibt aber die i-te Zeile zurück und nicht das i-te Zeichen.

Weiterhin
  • erwartet coding einen variablen string, bekommt aber ein string-Property
  • coding gibt keinen Rückgabewert, weswegen man es auch nicht einem x zuweisen kann
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 08:34 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