Registriert seit: 13. Jun 2009
Ort: Radebeul
241 Beiträge
Turbo Delphi für Win32
|
2 Arrays in eins
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."
|