Thema: Delphi 2 Arrays in eins

Einzelnen Beitrag anzeigen

Chefx

Registriert seit: 13. Jun 2009
Ort: Radebeul
241 Beiträge
 
Turbo Delphi für Win32
 
#1

2 Arrays in eins

  Alt 1. Aug 2009, 22:12
Hallo DBs,

ich weiß nicht wo mein Fehler liegt (unten fehlererleuterung):

Delphi-Quellcode:
function arraycoder(html,space1:array1):string;
var i,l,p,a1,a2:integer; resstr,mode:string; next:boolean; arrayz:array of string;
begin
l:=length(html) + length(space1);
a1:=0;
a2:=0;
p:=0;
setlength(arrayz,l);
for i:=0 to l-1 do begin
      if (a1 < length(html)) and (p = strtoint(html[a1,1])) then
    begin
      arrayz[i]:=html[a1,0];
      result:=result+html[a1,0];
      p:=p+length(html[a1,0]);
      a1:=a1+1;
    end;
    if (a2 < length(space1)) and (p = strtoint(space1[a2,1])) then
    begin
      arrayz[i]:=space1[a2,0];
      result:=result+space1[a2,0];
      p:=p+length(space1[a2,0]);
      a2:=a2+1;
    end;
  end;
end;
und hab das erst in ein anderes VLC geschreiben und da hat es tatelos funktioniert!
wo liegt mein Fehler?

Hier nochmal der andere Code (erklärt was eigentlich die funktion macht):
Delphi-Quellcode:
function zweizueins : string;
var array1,array2:array of array[0..1] of string;arrayz:array of string; a1,a2,i,l,p:integer;
begin
//Anfang// das hier ist nur eine vorbereitung und gehört nicht zur eigendlichen function
//Das ausgangswort ist : "Mor<g>enk<affe>e"
setlength(array1,2);
setlength(array2,3);
array1[0,0]:='<g>';
array1[0,1]:='3';
array1[1,0]:='<affe>';
array1[1,1]:='9';

array2[0,0]:='Mor';
array2[0,1]:='0';
array2[1,0]:='enk';
array2[1,1]:='6';
array2[2,0]:='e';
array2[2,1]:='15';
//Ende// Dies wurde jetzt in zwei Arrays gespeichert
      // Die aufgabe der function ist es dies Fehlerfrei wieder in der
      // richtigen Reihenfolge in ein anderes Array zu schreiben
l:=length(array1) + length(array2);
a1:=0;
a2:=0;
p:=0;
setlength(arrayz,l);
for i:=0 to l-1 do begin
      if (a1 < length(array1)) and (p = strtoint(array1[a1,1])) then //Array1: hier wird geprüft
                                                                      //ob die Position gleich des berechneten Werts
    begin
      arrayz[i]:=array1[a1,0];
      result:=result+array1[a1,0];
      p:=p+length(array1[a1,0]); // neuberechnung der position
      a1:=a1+1;
    end;
    if (a2 < length(array2)) and (p = strtoint(array2[a2,1])) then //Array2: hier wird geprüft
                                                                    //ob Die position gleich des berechneten Werts
    begin
      arrayz[i]:=array2[a2,0];
      result:=result+array2[a2,0];
      p:=p+length(array2[a2,0]); // neuberechnung der position
      a2:=a2+1;
    end;
  end;
end;
Der Fehler ist :
Oben würde er nur Mor<g> anzeigen und unten (wo es ja funktioniert) wieder Mor<g>enk<affe>e.

Ich weiß aber nicht wo?
(die zwei sind ja identisch. ich hab bestimmt was übersehen, aber was?)

danke für antworten
ein Sprichwort für Programmierer:
"Viele wege fürn zur EXE, aber ob sie funktioniert ist die andere Frage."
schau mal bei www.xlite.de.tc vorbei
  Mit Zitat antworten Zitat