Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi For Schleife (https://www.delphipraxis.net/139052-schleife.html)

Linguini 22. Aug 2009 11:32


For Schleife
 
Hallo,

diese Frage ist mir fast schon peinlich, aber ich steh im Moment wohl komplett aufm Schlauch ;)

Ich hab hier 100x100 "Felder". Also immer 100 Reihen und 100 Zeilen.

Ich brauch jetzt eine Schleife die auf alle 10.000 Felder zugreift. Also immer 1,1 - 1,2 -1,3..2,1-2,2
Eigentlich ja einfach, nur ich bekomm es nicht hin.

Danke.

Apollonius 22. Aug 2009 11:34

Re: For Schleife
 
Delphi-Quellcode:
for i := 1 to 100 do
  for j := 1 to 100 do
    //Feld[i, j] bearbeiten

Linguini 22. Aug 2009 11:47

Re: For Schleife
 
Danke^^

Kleine Frage noch.

Die Width und Heightangaben bei einem TImage sind doch gleich mit PixelxPixel oder?

freak4fun 22. Aug 2009 11:47

Re: For Schleife
 
Ja.

himitsu 22. Aug 2009 11:52

Re: For Schleife
 
PS: TImage ... dort wird aber bei 0 beginnend gezählt

Zitat:

Ich brauch jetzt eine Schleife die auf alle 10.000 Felder zugreift.
zur Definition würde auch dieses passen
Zitat:

Delphi-Quellcode:
for i := 0 to 99 do
  for j := 0 to 99 do
    //Feld[i, j] bearbeiten

Delphi-Quellcode:
for i := 0 to 9999 do
    //Feld[i mod 100, i div 100] bearbeiten

Muetze1 22. Aug 2009 12:00

Re: For Schleife
 
Zitat:

Zitat von freak4fun
Ja.

Falsch! Das sind die Abmaße der Komponente, die Pixelangaben werden in der Picture Property mit den Bildinformationen gehalten in dem jeweiligen TGraphic Nachfolger.

Linguini 22. Aug 2009 12:06

Re: For Schleife
 
@Muetze1

Seltsam, mein Code scheint aber zu funktionieren.
Mit:

Delphi-Quellcode:
for B := 1 to 531 do
  for E := H to 312 do
  begin
  if not (Image1.Canvas.Pixels[B,H]=clWhite) then belegt:=belegt+1;

  end;

Damit liefert er mir korrekte Ergebnisse wieviele Pixel nicht Weiß sind.

@Topic

Also mir ist geholfen. Vielen Dank :)

Apollonius 22. Aug 2009 12:10

Re: For Schleife
 
Wenn du aber die Eigenschaft Stretch des TImages auf True setzt und Bilder (z.B. aus Dateien) hineinlädst, werden die geladenen Bilder entsprechend der Größe des TImages gestreckt oder gestaucht. Dann stimmen die Daten aus dem TImage nicht mehr mit denen des Bildes überein.

himitsu 22. Aug 2009 12:15

Re: For Schleife
 
Nicht nur bei Stretch=True ... die Werte Witdh und/oder Height des TImages brauchen sich nur von denen der enthaltenden Grafik zu unterscheiden (ob es dann nur verschoben, gestreckt oder ausschnittsweise ist, ist ja egal)

Aber bei Image1.Canvas greift er ja auf das Canvas des TImages zu ... ich weiß jetzt nicht, in wie weit dieses mit TImage.Graphic.{typ}.Canvas übereinstimmt ... also könnte da durchaus TImage.Width/.Height stimmen.


Und wie schon erwähnt ... die Indizierung beginnt nicht bei 1 :warn:
(ein Glück, daß .Pixels da keine Exception wirft, sondern "nur" Schwarz liefert)

PS: not = entspricht <>

Linguini 22. Aug 2009 12:24

Re: For Schleife
 
Das mit dem Laden eines Bildes ist kein Problem :)
Das Image ist immer gleich groß, da ich es als kleine Zeichenfläche nutze.

Zitat:

not = entspricht <>
Mir gefällt da "if not" irgendwie mehr.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:06 Uhr.
Seite 1 von 2  1 2      

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