AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fortschritt darstellen

Ein Thema von whiteshark · begonnen am 26. Feb 2005 · letzter Beitrag vom 26. Feb 2005
Antwort Antwort
Benutzerbild von whiteshark
whiteshark

Registriert seit: 4. Dez 2003
Ort: Cottbus
222 Beiträge
 
Delphi 2005 Personal
 
#1

Fortschritt darstellen

  Alt 26. Feb 2005, 23:16
Moin Leute;

Ich habe mal wieder ein Problem. Wir sollen ein Programm schreiben, dass die Sortieralgorithmen vergleicht. Das ist mit ja gelungen. Nun wollte ich als kleine Spielerrei einen Fortschrittbalken einbauen. Ich wollte ihn der einfach halber erst mal nur für das Zufallsfahlen generieren verwenden.
Delphi-Quellcode:
procedure listefuellen
var a:array[1..100000] of integer;
var check:integer;
var n:integer;
begin

n:=strtoint(edit1.text);
randomize;

check:=n/10;

for i:=1 to n do
        begin
        a[i]:=random(n+10);
        end;

for j:=1 to n do
        begin
        if(j>=1*check) then image_fort1.Visible:=true;
        if(j>=2*check) then image_fort2.Visible:=true;
        if(j>=3*check) then image_fort3.Visible:=true;
        if(j>=4*check) then image_fort4.Visible:=true;
        if(j>=5*check) then image_fort5.Visible:=true;
        if(j>=6*check) then image_fort6.Visible:=true;
        if(j>=7*check) then image_fort7.Visible:=true;
        if(j>=8*check) then image_fort8.Visible:=true;
        if(j>=9*check) then image_fort9.Visible:=true;
        if(j>=10*check) then image_fort10.Visible:=true;
        memo1.lines.add(inttostr(a[j]));
        end; // end of if-abfrage
end; // end of LISTEFÜLLEN
Meine Idee war es, immer die Zehntel abzufragen. Immer wenn ein Zehntel voll ist soll der Balken um eine Einheit zunehmen. D.h. wenn für n=65000 eingesetzt wird müsste alle 6500 eine Einheit addiert werden. Das tut es aber net. Wo liegt das Problem?
Men are born ignorant, not stupid; they are made stupid by education. - Bertrand Russell

I cannot teach anybody anything, i can only make them think. - Socrates
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Fortschritt darstellen

  Alt 26. Feb 2005, 23:23
Zu deinem problem kann ich nichts sagen, da ich es nicht gant verstehe.

Aber einige Tipps:

==> Der Code ist schlecht formatiert
==> Das hier:

Delphi-Quellcode:
for j:=1 to n do
        begin
        if(j>=1*check) then image_fort1.Visible:=true;
        if(j>=2*check) then image_fort2.Visible:=true;

        [...]
kannst du vereinfachen, indem du zu begin

if(j>=j*check) ... schreibst und image_fort per Delphi-Referenz durchsuchenFindComponent ansprichst.
  Mit Zitat antworten Zitat
Benutzerbild von gordon freeman
gordon freeman

Registriert seit: 28. Jun 2003
Ort: Gelsenkirchen
337 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Fortschritt darstellen

  Alt 26. Feb 2005, 23:25
Warum benutzt du nicht eine fertige Lösung, wie zum Beispiel die Progressbar, dann könnte man das ganze schön leicht errechnen:

Progressbar1.position := ((j / n)* 100) div 1;
  Mit Zitat antworten Zitat
bttb930

Registriert seit: 6. Okt 2003
372 Beiträge
 
#4

Re: Fortschritt darstellen

  Alt 26. Feb 2005, 23:31
die antwort auf deine frage: zuerst wird die i-schleife durchlaufen, dann die j-schleife

also egal wie hoch n ist: zuerst werden die zufallszahlen generiert (ALLE!) und erst dann deine fortschrittsanzeige

du müsstest für das was du willst die beiden schleifen zu einer zusammen fassen
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Fortschritt darstellen

  Alt 26. Feb 2005, 23:34
Vielleicht wäre es so besser:

Delphi-Quellcode:
procedure listefuellen;
var a: array of integer;//dynamisches Array
    check, n, i: integer;
begin
  n:= strtoint(Edit1.Text);
  Randomize;
  check:= n div 10;
  SetLength(a, n);//Länge festlegen

  for i:=1 to n do
  begin
    a[i-1]:=random(n+10);
    if(j>=1*check) then image_fort1.Visible:=true;
    if(j>=2*check) then image_fort2.Visible:=true;
    if(j>=3*check) then image_fort3.Visible:=true;
    if(j>=4*check) then image_fort4.Visible:=true;
    if(j>=5*check) then image_fort5.Visible:=true;
    if(j>=6*check) then image_fort6.Visible:=true;
    if(j>=7*check) then image_fort7.Visible:=true;
    if(j>=8*check) then image_fort8.Visible:=true;
    if(j>=9*check) then image_fort9.Visible:=true;
    if(j>=10*check) then image_fort10.Visible:=true;
    memo1.lines.add(inttostr(a[i-1]));
  end; //for-Schleife
end; //LISTEFÜLLEN
IMHO ist es aber mit einer Progressbar-Komponente einfacher (und auch eleganter), den Fortschritt anzuzeigen. Auch dieses if(j>=1*check) then ... könnte man anders lösen.

MfG
Binärbaum
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Benutzerbild von whiteshark
whiteshark

Registriert seit: 4. Dez 2003
Ort: Cottbus
222 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Fortschritt darstellen

  Alt 26. Feb 2005, 23:54
Ja, das mag ja sein. Aber ich bin noch ein völliger Anfänger in Sachen Delphi und da war das für mich erstmal die beste Lösung. Und des habe ich mich bei der DP angemeldet um auf Fragen Antworten zu bekommen und um mich weiter zu bilden.
Men are born ignorant, not stupid; they are made stupid by education. - Bertrand Russell

I cannot teach anybody anything, i can only make them think. - Socrates
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:36 Uhr.
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