![]() |
Step wie noch mal ?
Hab irgendwann schon mal danach gefragt glaube ich.
Find den Thread nicht mehr.
Code:
Wie bekomme ich den Step in Delphi ?
for i = 0 to 100 step 10
gruss Emil |
Re: Step wie noch mal ?
Über eine Whileschleife oder Multiplikation. Eine direkte Möglichkeit gibt es soweit ich weiß nicht.
|
Re: Step wie noch mal ?
Zitat:
Delphi-Quellcode:
gruss Emil
procedure TfrmDraw.FadeBackBuffer;
var dx : Integer; dy : Integer; r : Integer; g : Integer; b : Integer; begin BitBlt(hTempDc, 0, 0, 65, 63, DC, 0, 0, SRCCOPY); //' Copy The R,G,B Data Into Our Image Array For Rapid Editing/Fading. CopyMemory(@ia[0,0], pAddr, 49152); //' Fade The Data. For dy := 0 To 62 do begin For dx := 0 To 195 do //(Step 3) begin b := ia[dx, dy] - 15; If b < 0 Then b := 0; ia[dx, dy] := b; g := ia[dx + 1, dy] - 15; If g < 0 Then g := 0; ia[dx + 1, dy] := g; r := ia[dx + 2, dy] - 15; If r < 0 Then r := 0; ia[dx + 2, dy] := r; end; end; //' Copy Edited Image Back To Dib Section. CopyMemory(pAddr, @ia[0,0], 49152); //' Blit The Faded Image To The Back Buffer. BitBlt(DC, 0, 0, 65, 63, hTempDc, 0, 0, SRCCOPY); end; |
Re: Step wie noch mal ?
Statt
Code:
entweder das hier:
for i = 0 to 100 step 3 do
begin // ... end;
Delphi-Quellcode:
oder das hier:
i: Integer = 0;
while i <= 100 do begin // ... i := i + 3; end;
Delphi-Quellcode:
;)
for i := 0 to (100 div 3) do
begin // Mach was mit (i * 3) end; |
Re: Step wie noch mal ?
Danke!
werd es mal mit
Delphi-Quellcode:
versuchen.
For dx := 0 To (195 div 3) do
begin // Mach was mit (dx * 3) end; EDIT: Obwohl ich dann eigentlich direkt 65 angeben kann Er soll aber alle 65 pixel die schleife ablaufen. Dein Beispiel ist das gleiche wie
Delphi-Quellcode:
oder ?
For dx := 0 To 65 do
Wann bearbeitet er aber 130 und 195 ? also einmal von 0 > 65 dann von 65 > 130 usw.. Das wäre so aber nicht möglich mit DIV 3 gruss Emil |
Re: Step wie noch mal ?
wie wäre es mit
Delphi-Quellcode:
Das mit dem div verstehe ich ehrlich gesagt nicht :lol:
for i := 0 to 10 do
begin // mach was mit (i*10) end; Sherlock |
Re: Step wie noch mal ?
Zitat:
For dx := 0 To 65 do Das problem ist aber immer noch das gleiche. Es nutzt mir nichts die daten i*3 zu nehmen denn zuerst sollen die ersten 65 pixel dann die von 65 > 130 und dann die von 130 > 195 verarbeitet werden das geht aber mit i*3 nicht. gruss Emil |
Re: Step wie noch mal ?
@Sherlock: Das mit dem div ist das, was du "im Kopf" gemacht hast: Es rechnet die Anzahl der Durchläufe aus, die notwendig sind.
@Emil: Das verstehe ich jetzt nicht mehr :gruebel: Ich dachte du meinst mit
Code:
Dass da sowas rauskommt:
for i := 0 to 10 step 3 do
showmessage(i); Zitat:
Delphi-Quellcode:
Das da oben wäre dann ungefähr so:
for i := 0 to (10 div 3) do
// oder ausgerechnet: for i := 0 to 3 do showmessage(i * 3);
Delphi-Quellcode:
Die Variable dx durchläuft den Bereich von 0 bis 65 - da du aber beid jeder Verwendung (dx * 3) nimmt, bekommst du den Bereich 0..195 in Dreierschritten (lies: 0, 3, 6, 9, 12, 15, ..., 195)
For dx := 0 To (195 div 3) do //(Step 3)
begin b := ia[(dx * 3), dy] - 15; If b < 0 Then b := 0; ia[(dx * 3), dy] := b; g := ia[(dx * 3) + 1, dy] - 15; If g < 0 Then g := 0; ia[(dx * 3) + 1, dy] := g; r := ia[(dx * 3) + 2, dy] - 15; If r < 0 Then r := 0; ia[(dx * 3) + 2, dy] := r; end; |
Re: Step wie noch mal ?
Ich schlage trotzdem vor, eine While-Schleife zu nehmen, sonst muß man ev. ziemlich viel rechnen: for i=12 to 51 step 7 wird dann einfach zu:
Delphi-Quellcode:
Mit einer For-Schleife wird es viel komplizierter.
i := 12;
while i<=51 do begin //... inc(i,7); end; |
Re: Step wie noch mal ?
Zitat:
Danke ;) gruss Emil |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz