Thema: Transposition

Einzelnen Beitrag anzeigen

foerster7892

Registriert seit: 10. Okt 2007
Ort: Brieskow-Finkenheerd
181 Beiträge
 
#1

Transposition

  Alt 25. Mär 2012, 17:55
Delphi-Version: 5
HiHo

kann mir wer erklären warum mein Array bugged??

Delphi-Quellcode:
function transposition(u,k:string):string; //u=Klartext; k=Schlüssel
var sk: Array of Integer;
    kboard: Array of Array of char;
    y,x,i,j,p: integer;
begin
  transposition := '';
  setlength(kboard, length(k));
  if not((length(u)/length(k))=(trunc(length(u)/length(k)))) then y := trunc(length(u)/length(k))
  else y := trunc(length(u)/length(k))+1;
  for i := 0 to length(k)-1 do
    setlength(kboard[i],y);
  x := 0; //x-Spalte in der Tabelle
  for i := 0 to length(k)-1 do
    for j := 0 to y-1 do kboard[i,j] := ' ';
  for i := 1 to length(u) do
  begin
    if ((i mod length(k)) = 1) and (i > 1) then inc(x);
    kboard[i-x*length(k)-1,x] := u[i];
    Form1.ListBox1.items.add(kboard[i-x*length(k)-1,1]); //<- erste Ausgabe der 2. Array Spalte richtig, wenn ich danach das Array wieder aufrufe kommen falsche Ausgaben in der Listbox
  end;
  setlength(sk, length(k));
  for i := 1 to length(k) do
  begin
    p := 1;
    for j := 1 to length(k) do
      if (Ord(k[i]) > Ord(k[j])) or ((k[i] = k[j]) and (j < i)) then inc(p);
    sk[i-1] := p;
  end;
  for i := 1 to length(k) do
  begin
    x := 0;
    repeat
      inc(x);
    until i = sk[x-1];
    for j := 0 to y-1 do
      if kboard[x-1,j] <> ' then transposition := transposition + kboard[x-1,j];
  end;
end;
seh einfach nur meinen Fehler nicht, wäre dankbar für nen zweiten der draufguckt.


/lazarus
mfg
foerster7892
  Mit Zitat antworten Zitat