AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Step wie noch mal ?

Ein Thema von EWeiss · begonnen am 23. Apr 2009 · letzter Beitrag vom 23. Apr 2009
Antwort Antwort
Seite 1 von 2  1 2   
EWeiss
(Gast)

n/a Beiträge
 
#1

Step wie noch mal ?

  Alt 23. Apr 2009, 13:13
Hab irgendwann schon mal danach gefragt glaube ich.
Find den Thread nicht mehr.

Code:
for i = 0 to 100 step 10
Wie bekomme ich den Step in Delphi ?

gruss Emil
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Step wie noch mal ?

  Alt 23. Apr 2009, 13:14
Über eine Whileschleife oder Multiplikation. Eine direkte Möglichkeit gibt es soweit ich weiß nicht.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

Re: Step wie noch mal ?

  Alt 23. Apr 2009, 13:19
Zitat von NamenLozer:
Über eine Whileschleife oder Multiplikation. Eine direkte Möglichkeit gibt es soweit ich weiß nicht.
Wie soll ich das hier verwirklichen fällt mir nix ein ..

Delphi-Quellcode:
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;
gruss Emil
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.542 Beiträge
 
#4

Re: Step wie noch mal ?

  Alt 23. Apr 2009, 13:25
Statt
Code:
for i = 0 to 100 step 3 do
begin
  // ...
end;
entweder das hier:
Delphi-Quellcode:
i: Integer = 0;
while i <= 100 do
begin
  // ...
  i := i + 3;
end;
oder das hier:
Delphi-Quellcode:
for i := 0 to (100 div 3) do
begin
  // Mach was mit (i * 3)
end;
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

Re: Step wie noch mal ?

  Alt 23. Apr 2009, 13:29
Danke!
werd es mal mit
Delphi-Quellcode:
For dx := 0 To (195 div 3) do
begin
  // Mach was mit (dx * 3)
end;
versuchen.

EDIT:
Obwohl ich dann eigentlich direkt 65 angeben kann
Er soll aber alle 65 pixel die schleife ablaufen.

Dein Beispiel ist das gleiche wie
For dx := 0 To 65 do oder ?
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
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.498 Beiträge
 
Delphi 10.3 Rio
 
#6

Re: Step wie noch mal ?

  Alt 23. Apr 2009, 13:50
wie wäre es mit
Delphi-Quellcode:
for i := 0 to 10 do
begin
  // mach was mit
  (i*10)
end;
Das mit dem div verstehe ich ehrlich gesagt nicht

Sherlock
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

Re: Step wie noch mal ?

  Alt 23. Apr 2009, 13:58
Zitat von Sherlock:
wie wäre es mit
Delphi-Quellcode:
for i := 0 to 10 do
begin
  // mach was mit
  (i*10)
end;
Das mit dem div verstehe ich ehrlich gesagt nicht

Sherlock
habs ja geschrieben
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
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.542 Beiträge
 
#8

Re: Step wie noch mal ?

  Alt 23. Apr 2009, 14:02
@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

Ich dachte du meinst mit

Code:
for i := 0 to 10 step 3 do
showmessage(i);
Dass da sowas rauskommt:
Zitat:
0 3 6 9
Dann wäre das hier equivalent:
Delphi-Quellcode:
for i := 0 to (10 div 3) do
// oder ausgerechnet: for i := 0 to 3 do
showmessage(i * 3);
Das da oben wäre dann ungefähr so:
Delphi-Quellcode:
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;
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)
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#9

Re: Step wie noch mal ?

  Alt 23. Apr 2009, 14:09
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:
i := 12;
while i<=51 do begin
  //...
  inc(i,7);
end;
Mit einer For-Schleife wird es viel komplizierter.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#10

Re: Step wie noch mal ?

  Alt 23. Apr 2009, 14:13
Zitat:
@Emil: Das verstehe ich jetzt nicht mehr
Sorry ist korrekt in 3 schritten also 3,6,9 usw..
Danke

gruss Emil
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf