bei mir kommt es momentan zu einem Problem, das das Füllen eines Arrays betrifft. Ich schreibe eine ganz einfache Funktion, die Klammern ausmultiplizieren soll. Für '(3+2)*(1+4)' sollte sie also '3*1+3*4+2*1+2*4' ausgeben. In diesem Rahmen möchte ich gerne die einzelnen Summanden in ein Array schreiben. Dazu hab ich mir schon einen Klammerausdruck gegriffen, ihn im String l gespeichert und die äußere Klammer entfernt. Dann habe ich beispielsweise '3+2'. Ein Array suml aus Strings mit der richtigen Länge ist schon vorbereitet. Jetzt will ich die Summanden auch tatsächlich in dieses Array schreiben und dabei natürlich auch deren Vorzeichen mitnehmen, das aus der Operation + oder - davor resultiert. Mit den Integers i,posm,posp,pos und einem String w habe ich mir folgendes überlegt:
Code: Alles auswählen
//Summanden in Array schreiben
for i:=0 to length(suml)-1 do
begin
posp:=AnsiPos('+',l);
posm:=AnsiPos('-',l);
if ((posp<posm) and (posp>0)) or (posm=0) then pos:=posp else pos:=posm; //erstes Plus oder Minus finden
w:=AnsiLeftStr(l,pos-1);
if pos=posm then w:='-'+w; //sofern negativ, Vorzeichen ergänzen
suml[i]:=w;
//bearbeiteten Teil abschneiden
l:=AnsiRightStr(l,length(l)-pos);
end;
Frohes Neues
beumyz