AGB  ·  Datenschutz  ·  Impressum  







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

Anfängerfehler

Ein Thema von faux · begonnen am 18. Sep 2005 · letzter Beitrag vom 18. Sep 2005
Antwort Antwort
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#1

Anfängerfehler

  Alt 18. Sep 2005, 08:21
Kann mir das wer erklären:

Code:
(...)
private double max;
(...)
this.max = 99991; //Beispiel
(...)
double up = (Console.WindowWidth - 3) / this.Max; //Ergibt 0
double up = (double)(Console.WindowWidth - 3) / this.Max; //Ergibt das richtige (zB 0,00008000720065)
Ich kappier das nicht, wieso ich das Ergebnis per Carting in double Umwandeln muss, obwohl ich es einer double Variable zuweise...

Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#2

Re: Anfängerfehler

  Alt 18. Sep 2005, 08:35
Vermutlich wird der Operator / auf Integern auch nur ein Integer-Ergebnis liefern. Bei Delphi gibt es zwei Operatoren / und div, wobei / immer ein Double (Extended?) liefert.
I
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Anfängerfehler

  Alt 18. Sep 2005, 08:39
Ja, das mit Delphiist mir bekannt, deswegen dachte ich, dass es auch in C# so ist...
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#4

Re: Anfängerfehler

  Alt 18. Sep 2005, 09:32

Code:
   class TestClass
   {
      private double max = 99991;
      private int WindowWidth = 10; // Console.WindowWidth gibts in 1.1 nicht
      
      public void Test()
      {
         double up = (WindowWidth) / max; // Ergibt 0,00010009...
         Console.WriteLine(up);
         up = (double)(WindowWidth) / max; // Ergibt 0,00010009...
         Console.WriteLine(up);
      }
   }
Funktioniert beides perfekt. Ich kann mir nicht wirklich vorstellen, dass sie in C# 2.0 die impliziten Konvertierungen verändert haben .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Anfängerfehler

  Alt 18. Sep 2005, 13:33
Ich hab mich schon grün und blau geärgert, und nichte gefunden woran es liegt, dass bei so einer simplen Division immer 0 raus kommt. Dannhab ich mir beide Faktoren per Diagnostics.Debug.WriteLine ausgeben lassen und die waren eben 80 und 99991. Ich hab dann in meiner Verzweiflung einfach ein Carting reingehauen - dann gings. - Ohne Carsting wieder net...

Will wer die ganze Klasse sehen (ca 20 Zeilen)?

Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Sergej

Registriert seit: 12. Jun 2003
Ort: Stuttgart
169 Beiträge
 
#6

Re: Anfängerfehler

  Alt 18. Sep 2005, 13:44
Tag. Ja gib mal bitte die ganze Klasse.


[edit] Also ich kann das Ergebnis von Khabarakh mit .NET Beta 2 bestätigen. [/edit]



Greetz Sergej
Ceterum censeo cartaginem esse delendam
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#7

Re: Anfängerfehler

  Alt 18. Sep 2005, 13:52
Zitat von faux:
Ohne Carsting wieder net...
  Mit Zitat antworten Zitat
Sergej

Registriert seit: 12. Jun 2003
Ort: Stuttgart
169 Beiträge
 
#8

Re: Anfängerfehler

  Alt 18. Sep 2005, 13:59
Alle habens gesehen und alle haben sich beherrscht..und dann kamst du


@Faux: Was er damit sagen wollte, es heißt : Casting


Greetz Sergej
Ceterum censeo cartaginem esse delendam
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Anfängerfehler

  Alt 18. Sep 2005, 14:37
Ja, weiß ich doch nicht wie das Zeug heißt... Ich weiß wie man es anwendet und das reicht mir...
Zeile 66.
Code:
  class SaveThread
  {
    private Thread InternalThread;
    public Thread Thread
    {
      get
      {
        return this.InternalThread;
      }
    }
    #region Variablendeklaration
    /*** Hier wären noch ein paar restliche Variablen ***/
    private int Max;
    public int Maximum
    {
      get
      {
        return this.Max;
      }
      set
      {
        this.Max = value;
      }
    }
    private double Percent = 0;
    public double Percentage
    {
      get
      {
        return this.Percent;
      }
    }
    #endregion
    public SaveThread()
    {
      this.InternalThread = new Thread(new ThreadStart(Execute));
    }
    public void Execute()
    {
      System.IO.StreamWriter file = new System.IO.StreamWriter(this.SaveFileName);
      file.WriteLine("Text;MD5");
      //********* HIER IS DIE ZEILE: *********//
      double up = (double)(Console.WindowWidth - 3) / this.Max; //Hier ist das CASTING ohne r
      foreach (Types.OutputStruct value in this.DataArray)
      {
        file.WriteLine(value.Text + ";" + value.MD5);
        this.Percent += up;
      }
      file.Close();
    }
  }
}
Da müsste es doch völlig egal sein, ob ich jetzt ein Casting mache, oder nicht, oder???

Ich denke nicht, dass es an der Klasse liegt. Eher am Rest des Codes:

Ausschnitt vom Code:
Code:
Console.Write("Pfad> ");
SaveThread Save = new SaveThread();
Save.FileName = Console.ReadLine();
Save.Maximum = Schleife.Maximum;
Save.Data = Schleife.Output;
Save.Thread.Start();
while (Save.Thread.IsAlive)
{
  string Bar = "";
  for (int i = 0; i < Console.WindowWidth - 3; i++)
  {
    if (i < Save.Percentage * (Console.WindowWidth - 3))
      Bar += "=";
    else
      Bar += " ";
  }
  Console.Write("[" + Bar + "]");
  Console.Write('\r');
@MathiasSimmack: Da hab ich aber schon vieel peinlichere Fehler in der DP gesehen....
Angehängte Dateien
Dateityp: rar program_738.rar (1,6 KB, 2x aufgerufen)
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  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 08:50 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