Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ladebalken der anzeigt wan procedure beendet ist (https://www.delphipraxis.net/109013-ladebalken-der-anzeigt-wan-procedure-beendet-ist.html)

Deltachaos 22. Feb 2008 19:50


Ladebalken der anzeigt wan procedure beendet ist
 
Ich würde gerne wiessen wie ich bestimmete zeichen in einem memo ersätze.

Ein Memo in dem ein text steht
Ein Button
Wen mann auf den Butten klickt soll der Text im memo verändert werden.

z.B.
a = 1
b = 2
c = 3
d = 4

vorher a b c d
nacher 1 2 3 4

So was ähnliges ist doch StringReplace oder?
aber damit hab ich es auch dur das ersetzen der variable nicht hinbekommen

z.B.:
memo1.text := StringReplace(memo1.text, 'a', '1', [rfReplaceAll]);

Deltachaos 22. Feb 2008 19:52

Re: Zeichen in Memo ersetzen
 
Ich dencke hat sich erledigt. habs hinbekommen.

:wall: hätt ich mir den thead auch sparen können

DeddyH 22. Feb 2008 19:53

Re: Zeichen in Memo ersetzen
 
Hmmm... und was funktioniert da nicht? Sieht eigentlich ganz in Ordnung aus, der Code (evtl. noch rfIgnoreCase zu den Options hinzufügen).

Deltachaos 22. Feb 2008 19:57

Re: Zeichen in Memo ersetzen
 
vieleicht doch net.

wie kan ich in stringreplace variablen benutzen??

Delphi-Quellcode:
  formdialog.memo.text := StringReplace(formdialog.memo.text, 'a', formdialog.Edit1.text, [rfReplaceAll]);
oder

Delphi-Quellcode:
  formdialog.memo.text := StringReplace(formdialog.memo.text, 'a', key1, [rfReplaceAll]);
so funkts net

DeddyH 22. Feb 2008 19:59

Re: Zeichen in Memo ersetzen
 
Gib doch mal eine gescheite Fehlermeldung. "Funkt net" hilft hier nicht weiter. Meckert der Compiler, oder tut es einfach nicht, was Du willst?

Deltachaos 22. Feb 2008 20:03

Re: Zeichen in Memo ersetzen
 
Zitat:

Zitat von DeddyH
Gib doch mal eine gescheite Fehlermeldung. "Funkt net" hilft hier nicht weiter. Meckert der Compiler, oder tut es einfach nicht, was Du willst?

Das ist es ja es gibt keine fehlermeldung.
Nach dem klick auf den butten ersätzt er das a durch nichts also löscht den buchstaben sozusagen.
ich hab in edit1 natürlich vorher was eingegeben. Datentyp is string

DeddyH 22. Feb 2008 20:05

Re: Zeichen in Memo ersetzen
 
Das kommt mir komisch vor. Sicher, dass Du das richtige Edit angegeben hast?

Deltachaos 22. Feb 2008 20:07

Re: Zeichen in Memo ersetzen
 
Zitat:

Zitat von DeddyH
Das kommt mir komisch vor. Sicher, dass Du das richtige Edit angegeben hast?

ja in dem programm gibt es nur ein edit.

DeddyH 22. Feb 2008 20:10

Re: Zeichen in Memo ersetzen
 
Bei mir funktioniert das, der Fehler muss woanders liegen.

dominikkv 22. Feb 2008 20:12

Re: Zeichen in Memo ersetzen
 
gib doch mal kurz vor oder nach der Zeile mal ein showmessage(formdialog.Edit1.text); aus, dann weißt du was drin steht.

Deltachaos 22. Feb 2008 21:21

Re: Zeichen in Memo ersetzen
 
Zitat:

Zitat von dominikkv
gib doch mal kurz vor oder nach der Zeile mal ein showmessage(formdialog.Edit1.text); aus, dann weißt du was drin steht.

habs hinbeckommen.

etz habe ich folgendes problem (abgesehen davon das meine maus kaput gegangen ist und ich mit der Tastaturmaus weiterarbeite)

ich würde gerne das der text in edit1 "geteilt" wird

soll heisen
Ich gebe ein abcd
das wird dan normalerweise in der variable key1 gespeichert ich will aber das in variable Key1 ab und in variable Key1A cd gespeichert wird.

hintergrung:

Delphi-Quellcode:
  form1.memo1.text := StringReplace(form1.memo1.text, 'a', 'abc' + Key1 + 'defg' + Key2A, [rfReplaceAll]);

Deltachaos 22. Feb 2008 21:28

Re: Zeichen in Memo ersetzen
 
also im grunde genommen soll edit1 in zwei strings aufgeteilt werden.

Deltachaos 22. Feb 2008 21:46

Re: Zeichen in Memo ersetzen
 
funktionirt das nicht die ersten beiden zeichen/buchstaben in eine variable packen die beiden danach in eine und die danach dan auch in eine????

dominikkv 22. Feb 2008 21:53

Re: Zeichen in Memo ersetzen
 
Es gibt auch eine Editier-Funktion die man nutzen kann wenn einem noch etwas einfällt!
Das was du machst nennt sich pushen und wird nicht so gern gesehen^^
Ich werde jetzt mal mit Absicht nicht antworten.

Deltachaos 22. Feb 2008 22:12

Re: Zeichen in Memo ersetzen
 
Zitat:

Zitat von dominikkv
Es gibt auch eine Editier-Funktion die man nutzen kann wenn einem noch etwas einfällt!
Das was du machst nennt sich pushen und wird nicht so gern gesehen^^
Ich werde jetzt mal mit Absicht nicht antworten.

ok etz weis ichs.
ähm..
so ne denckanstos wehre ja auch gatz nett gewesen da wüsste ich wehnigstens nach was ich suchen soll

dominikkv 22. Feb 2008 22:23

Re: Zeichen in Memo ersetzen
 
ok, wollen wir mal nicht so sein ;)
Strings teilen kannst du zB mit Copy.
Delphi-Quellcode:
Key1 := Copy(MeinText, 1, length(MeinText) div 2);
Key2 := Copy(MeinText, length(MeinText) div 2, length(MeinText) div 2);
Kann sein das hier mal ein Buchstabe am Anfang/Ende verschluckt wird...ich hab das grad nicht getestet^^

Deltachaos 23. Feb 2008 08:42

Re: Zeichen in Memo ersetzen
 
Zitat:

Zitat von dominikkv
ok, wollen wir mal nicht so sein ;)
Strings teilen kannst du zB mit Copy.
Delphi-Quellcode:
Key1 := Copy(MeinText, 1, length(MeinText) div 2);
Key2 := Copy(MeinText, length(MeinText) div 2, length(MeinText) div 2);
Kann sein das hier mal ein Buchstabe am Anfang/Ende verschluckt wird...ich hab das grad nicht getestet^^

und in welcher variable wird das dan gespeichert?
und was ist das meintext?

wehte net wen du mir die einzelnen funktionen in dem text erkären könntest?

DeddyH 23. Feb 2008 08:49

Re: Zeichen in Memo ersetzen
 
Schau Dir mal die Copy-Funktion in der Hilfe an. Die erste Zeile speichert die erste Hälfte von MeinText in Key1, die zweite die zweite Hälfte (soll sie zumindest) in Key2.

Deltachaos 23. Feb 2008 09:00

Re: Zeichen in Memo ersetzen
 
Zitat:

Zitat von DeddyH
Schau Dir mal die Copy-Funktion in der Hilfe an. Die erste Zeile speichert die erste Hälfte von MeinText in Key1, die zweite die zweite Hälfte (soll sie zumindest) in Key2.

da kapir ich nur die hälfte.
das is irgendwie komisch geschrieben.
hab mir auch schon das beispiel angegugt.

Kann mir das wer auf "deutsch" erklären? :cyclops:

Deltachaos 23. Feb 2008 09:01

Re: Zeichen in Memo ersetzen
 
Zitat:

Zitat von DeddyH
Schau Dir mal die Copy-Funktion in der Hilfe an. Die erste Zeile speichert die erste Hälfte von MeinText in Key1, die zweite die zweite Hälfte (soll sie zumindest) in Key2.

Aso ich glaub ich blicks langsam

Delphi-Quellcode:
Key1 := Copy(form1.edit1.text, 1, length(form1.edit1.text) div 2);
Key1a := Copy(form1.edit1.text, length(form1.edit1.text) div 2, length(form1.edit1.text) div 2);

DeddyH 23. Feb 2008 09:04

Re: Zeichen in Memo ersetzen
 
Ganz einfach: der erste Parameter gibt den "Start" an, der 2. die Länge.
Delphi-Quellcode:
var sText, Teil1, Teil2: string;
begin
  sText := 'Dies ist ein String';
  Teil1 := Copy(sText,1,8);            //ab dem ersten Zeichen 8 Zeichen kopieren
  Teil2 := Copy(sText,9,Length(sText)); //ab dem 9. Zeichen den ganzen Rest
  ShowMessage(Teil1);
  ShowMessage(Teil2);
end;

Deltachaos 23. Feb 2008 10:03

Re: Zeichen in Memo ersetzen
 
Normalerweise müsste er doch jetzt das a in memo1 durch toll ersätzen und beim klik auf den 2 buttzon das toll durch ein a was es aber nicht tut

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    Memo1: TMemo;
    GroupBox2: TGroupBox;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    Label4: TLabel;
    Label5: TLabel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    PrintDialog1: TPrintDialog;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var
key1, key1a, key1b, key2, key2a, key2b, key3, key3a, key3b: string;

procedure _var_;
begin
 key1:= form1.edit1.text;
 key2:= form1.edit2.text;
 key3:= form1.edit3.text;
 key1a := Copy(key1,1,4);            //ab dem ersten Zeichen 8 Zeichen kopieren
 key1b := Copy(key1,5,Length(key1)); //ab dem 9. Zeichen den ganzen Rest
end;

procedure code;
begin
  form1.memo1.text := StringReplace(form1.memo1.text, 'a','toll' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'A','toll' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'b','gfhu' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'B','gf#hu' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'c','"bJs' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'C','"b%Js' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'd','/§jT' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'D','/§?jT' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'e','&ast' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'E','&a{st' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'f','g@4[' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'F','g@%4[' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'g','JHG³' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'G','JH²³' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'h','&%gd' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'H','&%%gd' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'i','' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'I','' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'j','' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'J','' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'k','' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'K','' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'l','' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'L','' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'm','', [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'M','' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'n','' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'N','' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'o','' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'O','' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'p','' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'P','' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'q','' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'Q','' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'r','' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'R','' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 's','' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'S','' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 't','' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'T','' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'u','' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'U','' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'v','' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'V','' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'w','' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'W','' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'x','' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'X','' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'y','(th{G' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'Y','(th!{G' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'z','' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'Y','' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, ' ','H$%³t' , [rfReplaceAll]);
end;

procedure decode;
begin
  form1.memo1.text := StringReplace(form1.memo1.text, 'toll', 'A', [rfReplaceAll]);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
     TRY
        Memo1.Lines.Loadfromfile(OpenDialog1.Filename);
     EXCEPT
        ShowMessage ('Fehler beim Laden der Datei!');
     END;
end;



procedure TForm1.Button2Click(Sender: TObject);
begin
  if SaveDialog1.Execute then
     TRY
        Memo1.Lines.SavetoFile(SaveDialog1.Filename);
     EXCEPT
        ShowMessage ('Fehler beim Speichern der Datei!');
     END;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  _var_;
  begin
    if form1.RadioButton1.Checked then
      code;
  end;
  begin
    if form1.RadioButton2.Checked then
      begin;
        code;
        code; //ich weis das es zählschleifen gibt! :-)
      end;
  end;
  begin
    if form1.radiobutton3.checked then
      begin
        code;
        code;
        code;
      end;
  end;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  _var_;
  begin
    if form1.RadioButton1.Checked then
      decode;
  end;
  begin
    if form1.RadioButton2.Checked then
      begin;
        decode;
        decode; //ich weis das es zählschleifen gibt! :-)
      end;
  end;
  begin
    if form1.radiobutton3.checked then
      begin
        decode;
        decode;
        decode;
      end;
  end;
end;

end.
ich binn am ende meines wissens angekommen

DeddyH 23. Feb 2008 10:14

Re: Zeichen in Memo ersetzen
 
Schau Dir Deine "code"-Funktion nochmal an: Du ersetzt 'a' durch 'toll', dann weiter unten jeden Buchstaben durch einen Leerstring, das kann ja nichts werden. Außerdem solltest Du aus den Prozeduren Methoden machen, so ist das recht unschön :)

Deltachaos 23. Feb 2008 15:08

Re: Zeichen in Memo ersetzen
 
Zitat:

Zitat von DeddyH
Schau Dir Deine "code"-Funktion nochmal an: Du ersetzt 'a' durch 'toll', dann weiter unten jeden Buchstaben durch einen Leerstring, das kann ja nichts werden. Außerdem solltest Du aus den Prozeduren Methoden machen, so ist das recht unschön :)

also ich habs erst mal hinbekommen.
is ja auch unlogisch gewesen

erste ersätze ich a durch toll
also toll

und dan werden diese buchstaben ja auch noch ersätzt aber durch gar nichts weil ich da noch nichts reingeschrieben hatte.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    Memo1: TMemo;
    GroupBox2: TGroupBox;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    Label4: TLabel;
    Label5: TLabel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    PrintDialog1: TPrintDialog;
    ProgressBar1: TProgressBar;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var
key1, key1a, key1b, key2, key2a, key2b, key3, key3a, key3b: string;
i:integer;

procedure _var_;
begin
 i:= 1;
 key1:= form1.edit1.text;
 key2:= form1.edit2.text;
 key3:= form1.edit3.text;
 key1a := Copy(key1,1,2);
 key1b := Copy(key1,3,4);
 key2a := Copy(key2,1,2);
 key2b := Copy(key2,3,4);
 key3a := Copy(key3,1,2);
 key3b := Copy(key3,3,4);
end;

procedure code;
begin
  form1.memo1.text := StringReplace(form1.memo1.text, 'a','th%6' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'A','th&%6' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'b','g' + key3b + 'fhu' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'B','gf' + key2a + '#hu' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'c','"' + key1a + 'bJs' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'C','"b' + key2a +'%Js' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'd','/' + key2b +'§jT' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'D','/§' + key3a + '?jT' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'e','&ast' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'E','&a{st' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'f','g@4[' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'F','g' + key2b + '@%4[' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'g','JHG³' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'G','JH²³' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'h','&' + key3b +'%gd' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'H','&' + key1b + '%%gd' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'i','ß}' + key1a + '=47' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'I','ß' + key3a + '}=G47' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'j','&"' + key3a + '31' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'J','&"}31' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'k','&' + key1b + '%$2' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'K','&%' + key3a + ')$2' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'l','9v' + key1b + '45' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'L','9v' + key2a + '[45' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'm','oed' + key3b + '2' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'M','oe' + key1b + 'dß2' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'n','%' + key2a + '-93' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'N','%-;' + key1a + '93' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'o','jdS' + key2a +'t' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'O','jd' + key1b + '§St' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'p','%h'+ key2a +'te' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'P','%ht' + key2b + '!e' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'q','g' + key1a + 'h92' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'Q','g' + key3a + 'h³92' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'r','th' + key3b + 'vg' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'R','th?' + key3b + 'vg' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 's','}\' + key2a + '23' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'S','}\d' + key1b + '³23' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 't','x' + key2b + 'J%"' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'T','xJ' + key1a + '$%"' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'u','²[' + key3b + 'g]{' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'U','²[g' + key2a + '&]{' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'v','ueb' + key3a + 'A' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'V','u²' + key2a + 'ebA' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'w','%&5' + key3a + '&' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'W','%&' + key1b + '=5&' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'x','g' + key2b + 'htz' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'X','gh{' + key1b + 'tz' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'y','(th' + key3a + '{G' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'Y','(th!{' + key1a + 'G' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'z','³E' + key2b + '€w' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'Z','³E€@' + key1a + 'w' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, ' ','H$' + key1b + '%³t' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '1','H$' + key1b + '!' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '2','H$' + key1b + '"' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '3','H$' + key1b + '§' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '4','H$' + key1b + '$' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '5','H$' + key1b + '%' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '6','H$' + key1b + '&' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '7','H$' + key1b + '/' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '8','H$' + key1b + '(' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '9','H$' + key1b + ')' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '0','H$' + key1b + '=' , [rfReplaceAll]);
end;

procedure decode;
begin
  form1.memo1.text := StringReplace(form1.memo1.text, 'H$' + key1b + '=','0' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'H$' + key1b + ')','9' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'H$' + key1b + '(','8' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'H$' + key1b + '/','7' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'H$' + key1b + '&','6' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'H$' + key1b + '%','5' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'H$' + key1b + '$','4' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'H$' + key1b + '§','3' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'H$' + key1b + '"','2' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'H$' + key1b + '!','1' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'H$' + key1b + '%³t',' ', [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '³E€@' + key1a + 'w','Z' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '³E' + key2b + '€w','z' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '(th!{' + key1a + 'G','Y' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '(th' + key3a + '{G','y' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'gh{' + key1b + 'tz','X' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'g' + key2b + 'htz','x' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '%&' + key1b + '=5&','W' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '%&5' + key3a + '&','w' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'u²' + key2a + 'ebA','V' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'ueb' + key3a + 'A','v' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '²[g' + key2a + '&]{','U' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '²[' + key3b + 'g]{','u' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'xJ' + key1a + '$%"','T' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'x' + key2b + 'J%"','t' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '}\d' + key1b + '³23','S' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '}\' + key2a + '23','s' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'th?' + key3b + 'vg','R' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'th' + key3b + 'vg','r' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'g' + key3a + 'h³92','Q' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'g' + key1a + 'h92','q' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '%ht' + key2b + '!e','P' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '%h' + key2a + 'te','p' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'jd' + key1b + '§St','O' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'jdS' + key2a +'t','o' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '%-;' + key1a + '93','N' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '%' + key2a + '-93','n' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'oe' + key1b + 'dß2','M' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'oed' + key3b + '2','m' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '9v' + key2a + '[45','L' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '9v' + key1b + '45','l' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '&%' + key3a + ')$2','K' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '&' + key1b + '%$2','k' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '&"}31','J' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '&"' + key3a + '31','j' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'ß' + key3a + '}=G47','I' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'ß}' + key1a + '=47','i' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '&' + key1b + '%%gd','H' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '&' + key3b +'%gd','h' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'JH²³','G' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'JHG³','g' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'g' + key2b + '@%4[','F' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'g@4[','f' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '&a{st','E' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '&ast','e' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '/§' + key3a + '?jT','D' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '/' + key2b +'§jT','d' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '"b' + key2a +'%Js','C' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, '"' + key1a + 'bJs','c' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'gf' + key2a + '#hu','B' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'g' + key3b + 'fhu','b' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'th&%6','A' , [rfReplaceAll]);
  form1.memo1.text := StringReplace(form1.memo1.text, 'th%6','a' , [rfReplaceAll]);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
     TRY
        Memo1.Lines.Loadfromfile(OpenDialog1.Filename);
     EXCEPT
        ShowMessage ('Fehler beim Laden der Datei!');
     END;
end;



procedure TForm1.Button2Click(Sender: TObject);
begin
  if SaveDialog1.Execute then
     TRY
        Memo1.Lines.SavetoFile(SaveDialog1.Filename);
     EXCEPT
        ShowMessage ('Fehler beim Speichern der Datei!');
     END;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  _var_;
  begin
    if form1.RadioButton1.Checked then
      code;
  end;
  begin
    if form1.RadioButton2.Checked then
      begin;
        code;
        code; //ich weis das es zählschleifen gibt! :-)
      end;
  end;
  begin
    if form1.radiobutton3.checked then
      begin
        code;
        code;
        code;
      end;
  end;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  _var_;
  begin
    if form1.RadioButton1.Checked then
      decode;
  end;
  begin
    if form1.RadioButton2.Checked then
      begin;
        decode;
        decode; //ich weis das es zählschleifen gibt! :-)
      end;
  end;
  begin
    if form1.radiobutton3.checked then
      begin
        decode;
        decode;
        decode;
      end;
  end;
end;

end.
so da das ersätzen manchmal schon sehr lange dauert würde ich gern wissen wie ich das hinbeckomme mit disem ladebalcken??

PS: Ist mein programmtext jetzt richtig eingerückt?

DeddyH 23. Feb 2008 15:14

Re: Zeichen in Memo ersetzen
 
Die Einrückung ist in meinen Augen OK (bis auf _var_), und Du hast mich auch verstanden. Allerdings sind das immer noch einfache Prozeduren. Und globale Variablen sollte man auch nach Möglichkeit vermeiden.

Deltachaos 23. Feb 2008 15:37

Re: Zeichen in Memo ersetzen
 
Zitat:

Zitat von DeddyH
Die Einrückung ist in meinen Augen OK (bis auf _var_), und Du hast mich auch verstanden. Allerdings sind das immer noch einfache Prozeduren. Und globale Variablen sollte man auch nach Möglichkeit vermeiden.

das _var_ hab ich so gemacht weil das die procedur ist in der den variablen ihr wert gegeben wird.
so dan das mit den einfachen proceduren. ähm.. ich weis nicht wie man das zu ner funktion macht. etwa indem man procedure duch funktion ersätzte oder so. und was sind globale variablen weis ich auch net.
und ich verstehe nicht gantz warum du schreibst
Zitat:

Zitat von Zitat
und Du hast mich auch verstanden

sol das lob oder drohung sein??? :?:

ich weis zu viele fragen auf einmal. :mrgreen:

noch was was hat ne funktion fürn vorteil gegenüber ner procedur?

Die Muhkuh 23. Feb 2008 15:56

Re: Ladebalken der anzeigt wan procedure beendet ist
 
Eine Funktion gibt einen Wert zurück, was eine Prozedur nicht kann.

z.B.:

Delphi-Quellcode:
function Addiere(Zahl1, Zahl2: Integer): Integer;
begin
  Result := Zahl1 + Zahl2;
end;
Das wäre ein Beispiel für eine einfache Funktion, die Zahl1 und Zahl2 addiert.

Und noch eine Bitte: Deine Rechtschreibung. Es wird hier öfter im Forum angesprochen und ich finde, Du solltest Dich auch etwas daran halten. Vor allem scheint Deine J-Taste nicht zu funktionieren (etz), solltest Du vielleicht mal reparieren. Spaß bei Seite, lies, bevor Du postet noch mal Deinen Beitrag durch und entferne Deine vielen Rechtschreibfehler.

Deltachaos 23. Feb 2008 16:01

Re: Ladebalken der anzeigt wan procedure beendet ist
 
Zitat:

Zitat von Die Muhkuh
Eine Funktion gibt einen Wert zurück, was eine Prozedur nicht kann.

z.B.:

Delphi-Quellcode:
function Addiere(Zahl1, Zahl2: Integer): Integer;
begin
  Result := Zahl1 + Zahl2;
end;
Das wäre ein Beispiel für eine einfache Funktion, die Zahl1 und Zahl2 addiert.

Und noch eine Bitte: Deine Rechtschreibung. Es wird hier öfter im Forum angesprochen und ich finde, Du solltest Dich auch etwas daran halten. Vor allem scheint Deine J-Taste nicht zu funktionieren (etz), solltest Du vielleicht mal reparieren. Spaß bei Seite, lies, bevor Du postet noch mal Deinen Beitrag durch und entferne Deine vielen Rechtschreibfehler.

ok

ähm..
Wie soll ich das jetzt bei mir Anwenden?
Ich denke das procedur volkommen ausreicht.

und wie ist das mit dem Ladebalken jetzt?

Die Muhkuh 23. Feb 2008 16:06

Re: Ladebalken der anzeigt wan procedure beendet ist
 
Hi,

die Funktion von mir hilft Dir gar nicht, es war nur ein Beispiel, um Dir zu zeigen, wie man eine Funktion deklariert.

Deltachaos 23. Feb 2008 16:11

Re: Ladebalken der anzeigt wan procedure beendet ist
 
Zitat:

Zitat von Die Muhkuh
Hi,

die Funktion von mir hilft Dir gar nicht, es war nur ein Beispiel, um Dir zu zeigen, wie man eine Funktion deklariert.

gut.

und wie ist das mit dem ladebalken?

Er soll so lange laden biss alle Befehle in einer "procedure" ausgeführt sind.

Nur ich weis net wie ich das machen soll.

marabu 23. Feb 2008 17:09

Re: Ladebalken der anzeigt wan procedure beendet ist
 
Hallo,

solange du deinen Code noch beschleunigen kannst, solltest du nicht an einen Ladebalken denken.

Delphi-Quellcode:
function Encode(const s, key1a, ..., key3b: string): string;
var
  buf: string;
begin
  buf := StringReplace(s, 'a','th%6' , [rfReplaceAll]);
  buf := StringReplace(buf, 'b','g' + key3b + 'fhu' , [rfReplaceAll]);
  // ...
  buf := StringReplace(buf, '9','H$' + key1b + ')' , [rfReplaceAll]);
  Result := StringReplace(buf, '0','H$' + key1b + '=' , [rfReplaceAll]);
end;
So hast du deine Prozedur zur Funktion umgebaut. Da jetzt nicht mehr 126 mal auf die Texteigenschaft des Memos zugegriffen wird, wird der Code sicher etwas schneller ausgeführt. Noch schneller wird der Code, wenn du nicht mehr mit StringReplace() arbeitest, da mit dieser Funktion jedesmal wieder der gesamte Text abgesucht wird. Wenn du nur einmal über deinen Text gehst, wird alles noch schneller.

Delphi-Quellcode:
function Encode(const s, key1a, ..., key3b: string): string;
var
  i: Integer;
  buf: string;
begin
  buf := '';
  for i := 1 to Length(s) do
    case s[i] of
      'a': buf := buf + 'th%6';
      'A': buf := buf + 'g' + key3b + 'fhu';
      // ...
      '9': buf := buf + 'H$' + key1b + ')';
      '0': buf := buf + 'H$' + key1b + '=';
      else buf := buf + s[i];
    end;
  Result := buf;
end;
Wenn du dann als nächsten Schritt noch die zu erwartende Größe des Ergebnisses berechnest, dann entfällt auch noch das aufwändige schrittweise Vergrößern von buf und alles wird noch einmal deutlich schneller.

Bevor du dann daran gehst einen Fortschrittsbalken anzuzeigen, musst du erstmal den zu erwartenden Zeitbedarf ausrechnen.

Freundliche Grüße vom marabu

Deltachaos 24. Feb 2008 13:09

Re: Ladebalken der anzeigt wan procedure beendet ist
 
Zitat:

Zitat von marabu
Hallo,

solange du deinen Code noch beschleunigen kannst, solltest du nicht an einen Ladebalken denken.

Delphi-Quellcode:
function Encode(const s, key1a, ..., key3b: string): string;
var
  buf: string;
begin
  buf := StringReplace(s, 'a','th%6' , [rfReplaceAll]);
  buf := StringReplace(buf, 'b','g' + key3b + 'fhu' , [rfReplaceAll]);
  // ...
  buf := StringReplace(buf, '9','H$' + key1b + ')' , [rfReplaceAll]);
  Result := StringReplace(buf, '0','H$' + key1b + '=' , [rfReplaceAll]);
end;
So hast du deine Prozedur zur Funktion umgebaut. Da jetzt nicht mehr 126 mal auf die Texteigenschaft des Memos zugegriffen wird, wird der Code sicher etwas schneller ausgeführt. Noch schneller wird der Code, wenn du nicht mehr mit StringReplace() arbeitest, da mit dieser Funktion jedesmal wieder der gesamte Text abgesucht wird. Wenn du nur einmal über deinen Text gehst, wird alles noch schneller.

Delphi-Quellcode:
function Encode(const s, key1a, ..., key3b: string): string;
var
  i: Integer;
  buf: string;
begin
  buf := '';
  for i := 1 to Length(s) do
    case s[i] of
      'a': buf := buf + 'th%6';
      'A': buf := buf + 'g' + key3b + 'fhu';
      // ...
      '9': buf := buf + 'H$' + key1b + ')';
      '0': buf := buf + 'H$' + key1b + '=';
      else buf := buf + s[i];
    end;
  Result := buf;
end;
Wenn du dann als nächsten Schritt noch die zu erwartende Größe des Ergebnisses berechnest, dann entfällt auch noch das aufwändige schrittweise Vergrößern von buf und alles wird noch einmal deutlich schneller.

Bevor du dann daran gehst einen Fortschrittsbalken anzuzeigen, musst du erstmal den zu erwartenden Zeitbedarf ausrechnen.

Freundliche Grüße vom marabu

ich verstehe den code nicht gantz. kanst du ihn erleutern?


Alle Zeitangaben in WEZ +1. Es ist jetzt 04: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