Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi "Durchlauf"-Algorhytmus gesucht (https://www.delphipraxis.net/54311-durchlauf-algorhytmus-gesucht.html)

MisterNiceGuy 1. Okt 2005 14:24


"Durchlauf"-Algorhytmus gesucht
 
Hi ich versuche gerade einen Algorhytmus zu schreiben, der folgendes tun soll:

-> Beginnen mit den ersten Buchstaben aus einem Memo.
-> Falls diser Buchstabe nicht der letzte aus dem Memo ist, den nächsten buchstaben aus dem Memo nehmen.
-> Falls es schon der letzte ist, einen neuen Buchstaben in den String einfügen.
-> Solange, bis ein String gefunden wurde.

Delphi-Quellcode:
    while panel1.Caption <> 'aa' do
      begin
        pw := panel1.Caption;
        for i:=length(pw) downto 1 do
          begin
            if pw[i] <> memo1.Text[length(memo1.Text)] then
              pw[i] := next_char(pw[i])
            else if i = 1 then
              pw := pw+memo1.Text[1];
          end;
        panel1.Caption := pw;
      end;
Das ist der Code, soweit ich den schon geschrieben habe. Aber es funktioniert irgendwie nicht so recht.
Jetzt meine Frage an euch, hat einer einen solchen Algorhytmus oder findet einen Fehler in dem Code?

Hoffe ihr könnt mir helfen!!

Grumble 1. Okt 2005 15:11

Re: "Durchlauf"-Algorhytmus gesucht
 
sorichtig habe ich nicht verstanden was du bezweckst aber ich hab das mal mit kommentaren interpretiert.... ichdenke mal das mit dem next char was nich so passt, aber die funktion kenn ich nicht, ich sehe auch nicht wie das naechste zeichen aus dem memo genommen wird, sondern nur das naechste zeichen aus pw , das ja die caption des panels erhaelt

Delphi-Quellcode:
while panel1.Caption <> 'aa' do // solange panel caption nicht aa ist
      begin
        pw := panel1.Caption;   // pw = panel caption
        for i:=length(pw) downto 1 do // fuer i = laenge pw runter bis 1
          begin
            if pw[i] <> memo1.Text[length(memo1.Text)] then  // wenn zeichen aus pw an stelle i nicht letztes zeichen aus memo text dann
              pw[i] := next_char(pw[i]) //  zeichen aus pw an stelle i = next_char??? funktion kenn ich nicht i = downto 1 haut das hin??? reicht da nicht einfach ein continue? 
            else if i = 1 then // wenn i = eins
              pw := pw+memo1.Text[1]; // pw = pw und erstes zeichen aus memo
          end;
        panel1.Caption := pw; // panel caption = pw
end;

DP-Maintenance 1. Okt 2005 15:32

DP-Maintenance
 
Dieses Thema wurde von "Christian Seehase" von "Windows API / MS.NET Framework API" nach "Sonstige Fragen zu Delphi" verschoben.
Hat so nichts mit der Windows-API zu tun.

MisterNiceGuy 1. Okt 2005 16:22

Re: "Durchlauf"-Algorhytmus gesucht
 
Ja also schwer zu erklären ;) Hier ist auf jedenfall die Lösung, das passende Programm gibts später nachgeliefert.

Hier erstmal der Algorhytmus:
Delphi-Quellcode:
var mompos:array[1..20] of integer;
    laenge:integer;
    i,j,k:integer;
    pw:string;
begin
  laenge := 1;
  mompos[laenge] := 1;
  statusbar1.Panels[1].Text := 'Suche...';
  start := GetTickCount;
  panel1.Caption := memo1.Text[1];
    while panel1.Caption <> 'aaaa' do
      begin
        pw := panel1.Caption;
        memo2.Lines.Add(pw);
        for i:=length(pw) downto 1 do
          begin
            if pw[i] <> memo1.Text[length(memo1.Text)] then
              begin
                pw[i] := next_char(pw[i]);
                if length(pw) > i then
                  for k:=i+1 to length(pw) do
                  pw[k] := memo1.text[1];
                break;
              end
            else if i = 1 then
              begin
                if length(pw) > 0 then
                  for j:= length(pw) downto 1 do
                    pw[length(pw)-j+1] := memo1.text[1];
                pw := pw+memo1.Text[1];
                break;
              end;
          end;
        delay(10);
        panel1.Caption := pw;
      end;


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