Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi 2 Arrays in eins (https://www.delphipraxis.net/138000-2-arrays-eins.html)

Chefx 1. Aug 2009 21:12


2 Arrays in eins
 
Hallo DBs,

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

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

Chefx 1. Aug 2009 22:33

Re: 2 Arrays in eins
 
Frage ha sich erledigt!

Die fiunktion ist einmanfrei!

Hat mit was anderem zu tum gehabt! :roll:


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