' schrieb:Ich gehe gerade durch dein Programm und versuche es nachzuvollziehen, allerdings habe ich an der oben zitierten Stelle ein Problem. Müßte es da nicht eher heißen: inc(pBR,BCols*YLenF); schließlich wollen wir in die nächste Zeile springen und eine Zeilenlänge wird doch gerade durch die Anzahl der Kolumnen vorgegeben. Der Teil dp:=(BCols-YLenF-1); soll ja auch einen Zeilenvorsprung bewirken und dort rechnen wir auch mit BCols. allerdings hätte ich dann auch:
MRows:= (BRows div XLenF);
MCols:= (BCols div YLenF);
Du hast natürlich Recht!
Ich hab wieder mal Spalte und Reihe verwechselt. Einigen wird uns auf folgendes: Spalte (also Col) ist das, was rüberwärts geht, also X-Richtung. Reihe (also Row) ist das, was runterwärts geht, also Y-Richtung. Demzufolge steht bei allem mit Row immer X und bei allem mit Col immer Y. Dann müsste aber auch zuerst die Y-Schleife kommen, da kann ich dann besser denken. Die X-Schleife wäre dann innen, was zur Folge hat, erst "die ganze erste Zeile (= Reihe = Row)" dann "die ganze zweite Zeile" etc. Damit sieht das "2D-Array" im Speicher dann wie folgt aus: Alle X-Werte der ersten Zeile, alle X-Werte der zweiten Zeile etc. Das wiederum ist wichtig für das spätere daterstellen.
Die Frage ist dann natürlich: Wie kommen die Daten (Bild[]) herein: Alle X hintereinander oder alle Y hintereinander?
Code:
inc(pBR,BRows*YLenF);
Dieses ist aber richtig: Row ist die X-Richtung, YLenF die Y-Richtung. Hiermit werden als YLenF-Zeilen übersprungen!