Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Seltsames Verhalten einer Funktion (https://www.delphipraxis.net/200467-seltsames-verhalten-einer-funktion.html)

peterbelow 26. Apr 2019 10:47

AW: Seltsames Verhalten einer Funktion
 
Zitat:

Zitat von Pytroxis (Beitrag 1431039)

Prinzipiell geht jetzt alles, vielen Dank dafür!
Werde die Tage jetzt nur noch meinen Code aufräumen und versuchen so kompakt wie möglich zu schreiben :D

Falsches Ziel, schreibe den Kode verständlich, das ist viel wichtiger als kompakt.

freimatz 26. Apr 2019 12:24

AW: Seltsames Verhalten einer Funktion
 
Finde ich auch - und vermutlich der Lehrer auch :lol:

hoika 26. Apr 2019 14:56

AW: Seltsames Verhalten einer Funktion
 
Hallo,
Zitat:

verständlich
Das ist doch aber schlecht!!!
Dann könnte später ein Kollege am Code weiterarbeiten und man wäre ersetzbar ... ;)

Pytroxis 26. Apr 2019 15:22

AW: Seltsames Verhalten einer Funktion
 
Zitat:

Zitat von peterbelow (Beitrag 1431042)
Zitat:

Zitat von Pytroxis (Beitrag 1431039)

Prinzipiell geht jetzt alles, vielen Dank dafür!
Werde die Tage jetzt nur noch meinen Code aufräumen und versuchen so kompakt wie möglich zu schreiben :D

Falsches Ziel, schreibe den Kode verständlich, das ist viel wichtiger als kompakt.

Um ehrlich zu sein ist es nicht das falsche Ziel. Ich muss ja nicht nur den Code abgeben sondern noch eine schriftliche Ausfertigung dazu wo ich alles erkläre.
Diese Ausfertigung darf maximal 12 Din A4 Seiten füllen, es hört sich zwar einfach an aber das ist es definitiv nicht (12 Seiten sind verdammt wenig).
Ich bin jetzt schon, ohne den Vergleich von Boxplots bei ca. 12 Seiten, demnach muss ich versuchen so viel wie möglich zu kürzen.
Ich erkläre sowieso alles in der Ausfertigung, zudem werden Kommentare im Code alles erklären.
Der Code soll eigentlich nur "Beiwerk" sein, die Facharbeit konzentriert sich auf das erklären des Programmes und wie ich es gelöst habe.
Außerdem meinte ich mit kompakt, dass ich Dinge weg lasse/auslagere die "unnötig" sind und umständliche Sachen einfacher schreiben will :)
Die Facharbeit ist soweit fertig, allerdings muss ich den vergleich noch einbringen und das wird schwierig.
Zur Krönung des ganzen: Ich habe meinen Lehrer gefragt ob ich ihm eine E-Mail schreiben kann um mit ihm alles zu besprechen, in dieser E-Mail war die erste Version meiner Facharbeit und ich fragte Ihn ob ich es so machen kann, diese E-Mail ist nun fast eine Woche her und bisher habe ich keine Reaktion erhalten.
Und um es noch schöner zu gestalten: Am 07.05. ist die Abgabe, d.h. ich habe nicht mehr viel Zeit die schriftliche Ausfertigung zu machen und es ist natürlich nicht schön, dass man an der "einfachsten" Aufgabe nun hängt, weil man nicht genau weiß wie man es machen soll -_-
(PS: Wir haben Ferien daher kann ich ihn nicht persönlich fragen und ich habe es nicht vor mir hin geschoben, die erste Version (in C++) war schon im Dezember fertig, allerdings hatte er bis vor kurzem die ganze Zeit über keine Zeit).



Zitat:

Zitat von hoika (Beitrag 1431068)
Das ist doch aber schlecht!!!
Dann könnte später ein Kollege am Code weiterarbeiten und man wäre ersetzbar ... ;)

Witzige Geschichte, in meinem gesamten Kurs (ca. 15-20 Schüler) gibt es genau 2 Personen die Programmieren können und ich bin eine davon :D
Das ersetzen wird daher vielleicht etwas schwerer :P

hoika 26. Apr 2019 15:31

AW: Seltsames Verhalten einer Funktion
 
Hallo,
Zitat:

(12 Seiten sind verdammt wenig).
Ist die Schriftgröße vorgegeben? ;)

Pytroxis 26. Apr 2019 21:35

AW: Seltsames Verhalten einer Funktion
 
Zitat:

Zitat von hoika (Beitrag 1431070)
Hallo,
Zitat:

(12 Seiten sind verdammt wenig).
Ist die Schriftgröße vorgegeben? ;)

Jep auch die Schriftart...

Aber nach einer erneuten E-Mail hat er geantwortet, habe jetzt mal einen Anhaltspunkt. wünscht mir Glück :D

Pytroxis 27. Apr 2019 16:33

AW: Seltsames Verhalten einer Funktion
 
Vielleicht könnt ihr mir gerade noch diese kurze Frage beantworten:
Ich habe meinen Code ja mittlerweile zu einer Klasse umgeschrieben.
Normalerweise würde man doch für jeden Boxplot eine Instanz erstellen, allerdings habe ich insgesamt nur eine Instanz für alle Boxplots erstellt.
Hierbei lasse ich dann einfach eine Schleife x Boxplots zeichnen, je nachdem wie viele Datensätze vorhanden sind.

Aber effektiv habe ich mir doch durch den umschrieb jetzt nichts gespart
Hätte ich einen Array vom Typ meiner Klasse erzeugt (wo jeder Index eine Instanz ist) hätte es doch mehr gebracht oder bin ich gerade nur dumm? :pale:

scrat1979 27. Apr 2019 20:53

AW: Seltsames Verhalten einer Funktion
 
Zitat:

Zitat von Pytroxis (Beitrag 1431136)

Aber effektiv habe ich mir doch durch den umschrieb jetzt nichts gespart
Hätte ich einen Array vom Typ meiner Klasse erzeugt (wo jeder Index eine Instanz ist) hätte es doch mehr gebracht oder bin ich gerade nur dumm? :pale:

Also ich hätte statt einem Array eine - bestenfalls generische - TObjectList genommen.. Wie der Name schon sagt ist diese genau dafür gedacht und hat auch schon sehr hilfreiche Methoden zur Verwaltung der Liste implementiert..

Pytroxis 27. Apr 2019 21:34

AW: Seltsames Verhalten einer Funktion
 
Zitat:

Zitat von scrat1979 (Beitrag 1431159)
Also ich hätte statt einem Array eine - bestenfalls generische - TObjectList genommen.. Wie der Name schon sagt ist diese genau dafür gedacht und hat auch schon sehr hilfreiche Methoden zur Verwaltung der Liste implementiert..

Okay danke, werde es mir angucken und dann überlegen ob ich für jeden Boxplot eine eigene Instanz erstelle oder einfach weiterhin eine Instanz für alles nutze, bis jetzt funktioniert alles und ich glaube andernfalls müsste ich alles umschreiben :D

Pytroxis 28. Apr 2019 14:10

AW: Seltsames Verhalten einer Funktion
 
Zitat:

Zitat von hoika (Beitrag 1430861)
Wer soll das verstehen?.

Hatte es nochmal überarbeitet und versucht übersichtlicher zu gestalten.
Meine Lösung ist nun:

Delphi-Quellcode:
procedure TBoxplot.zeichnen(Boxplot : real);
  var i, xWert, index: integer;
      eineLaengeneinheit : Double;
      getHeight : array[0..9] of integer;
      getWidth : array[0..3] of integer;
  begin
    if Length(FZahlen) > 0 then begin
      xWert := 50;
      index := trunc(Boxplot);

      eineLaengeneinheit := (FSize[1]-120) / (FZahlen[index][High(FZahlen[index])] - FZahlen[index][0]);


      getHeight[0] := round(FSize[0] * 0.31919 + FHeight * Boxplot);
      getHeight[1] := round(FSize[0] * 0.13214 + FHeight * Boxplot);
      getHeight[2] := round(FSize[0] * 0.18379 + FHeight * Boxplot);
      getHeight[3] := round(FSize[0] * 0.04839 + FHeight * Boxplot);
      getHeight[4] := round(FSize[0] * 0.09839 + FHeight * Boxplot);
      getHeight[5] := round(FSize[0] * 0.21839 + FHeight * Boxplot);
      getHeight[6] := round(FSize[0] * 0.15839 + FHeight * Boxplot);
      getHeight[7] := round(FSize[0] * 0.26839 + FHeight * Boxplot);
      getHeight[8] := round(FSize[0] * 0.28839 + FHeight * Boxplot);
      getHeight[9] := round(FSize[0] * 0.27742 + FHeight * Boxplot);

      getWidth[0] := round(xWert + (FQuartils[index][0] - FZahlen[index][0]) * eineLaengenEinheit);
      getWidth[1] := round(xWert + (FMedian[index] - FZahlen[index][0]) * eineLaengenEinheit);
      getWidth[2] := round(xWert-1 + (FQuartils[index][1] - FZahlen[index][0]) * eineLaengenEinheit);



      // Name des Boxplots
      FPaintBox.Canvas.TextOut(xWert-20, getHeight[3]-20, FNamen[index] + ':');

      // Einteilung/Markierung
        // Minimum
      FPaintBox.Canvas.TextOut(xWert-5, getHeight[0], FloatToStr(FZahlen[index][0]));
      drawLine(clRed, xWert, getHeight[1], xWert, getHeight[2]);

        // Maximum
      FPaintBox.Canvas.TextOut(FWidth-5, getHeight[0], FloatToStr(FZahlen[index][High(FZahlen[index])]));
      drawLine(clRed, FWidth, getHeight[1], FWidth, getHeight[2]);

        // unteres Quartil
      FPaintBox.Canvas.TextOut(getWidth[0]-5, getHeight[3], FloatToStr(FQuartils[index][0]));
      drawLine(clRed, getWidth[0], getHeight[4], getWidth[0], getHeight[5]);

        // FMedian[index]
      FPaintBox.Canvas.TextOut(getWidth[1]-5, getHeight[3], FloatToStr(FMedian[index]));
      drawLine(clRed, getWidth[1], getHeight[4], getWidth[1], getHeight[5]);

        // oberes Quartil
      FPaintBox.Canvas.TextOut(getWidth[2]-5, getHeight[3], FloatToStr(FQuartils[index][1]));
      drawLine(clRed, getWidth[2], getHeight[4], getWidth[2], getHeight[5]);

        //Boxplot an sich
      drawLine(clBlack, xWert, getHeight[6], getWidth[0], getHeight[6]);
      drawLine(clBlack, getWidth[0], getHeight[4], getWidth[2], getHeight[4]);
      drawLine(clBlack, getWidth[0], getHeight[5], getWidth[2], getHeight[5]);
      drawLine(clBlack, getWidth[2], getHeight[6], FWidth, getHeight[6]);

      //Skala
      for i := 0 to round(FZahlen[index][High(FZahlen[index])]-FZahlen[index][0]) do begin
        getWidth[3] := round(xWert + i * eineLaengenEinheit);
        drawLine(clBlack, getWidth[3], getHeight[7], getWidth[3], getHeight[8]);
      end;
      drawLine(clBlack, xWert, getHeight[9], FWidth, getHeight[9]);
    end;
  end;
Ist das so schon mal verständlicher? :D
Und habt Ihr noch Tipps es übersichtlicher/verständlicher zu schreiben? :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:00 Uhr.
Seite 3 von 4     123 4      

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