-
Forum: Programmieren allgemein
by DieDolly,
13. Apr 2019
Habe kurz in den Code reingeguckt und der scheint grob überschlagen 10x länger zu sein als der aus diesem Thread hier.
-
Forum: Programmieren allgemein
by DieDolly,
13. Apr 2019
Warum Unmengen an CPU Befehlszyklen verbraten, wenn es auch mit weniger geht?
-
Forum: Programmieren allgemein
by DieDolly,
13. Apr 2019
Ich hätte nicht gedacht, dass die windowseigene Muldiv() das alles berücksichtigt. Was berücksichtigt die denn noch? Denn die ist scheinbar plattformspezifisch.
-
Forum: Programmieren allgemein
by DieDolly,
13. Apr 2019
Verbesserung
class function TMathUtils.MathRound(X: Extended): Int64; // Bei stackoverflow gefunden, für die Sammlung. Obwohl Trunc dasselbe macht.
begin
if X >= 0 then
Result := Trunc(X + 0.5)
else
Result := Trunc(X - 0.5);
end;
-
Forum: Programmieren allgemein
by DieDolly,
13. Apr 2019
Die MulDiv Funktion muss ich korrigieren. Sie war leider falsch. Nicht, dass einer die falsche kopiert. Richtig lautet sie
class function TMathUtils.MulDiv(nNumber, nNumerator, nDenominator: Integer): Integer;
begin
Result := Round((nNumber * nNumerator) / nDenominator);
end;
-
Forum: Programmieren allgemein
by DieDolly,
6. Apr 2019
Früher hatte ich auch nur einen Monitor. Mittlerweile einen 24" und einen 21". Den zweiten möchte ich nicht mehr missen.
1x Delphi links, 1x rechts oder auf dem anderen Sublime oder irgendwas anderes.
-
Forum: Programmieren allgemein
by DieDolly,
6. Apr 2019
Als dreckigen Workaround hatte ich vorher ScaleBy benutzt. Und um das sichtbare Neuzeichnen zu verbergen, habe ich mir diese Prozedur geschrieben.
-
Forum: Programmieren allgemein
by DieDolly,
6. Apr 2019
Ich habe mir eure Funktionen jetzt nochmal genau angeguckt, selber nachgerechnet und ja, ich bin dumm wie Stroh. ich bin halt ein mathematisches Anti-Wunderkind im erhöhten Alter :thumb:
Ich versuche hier die ganze Zeit Prozentrechnung und wundere mich, warum ich nicht zurück auf 1050 komme.
MultiDiv scheint genau das zu tun, was Michael schrieb. Leider kann man in die Quelltexte von MultiDiv...
-
Forum: Programmieren allgemein
by DieDolly,
6. Apr 2019
Leider kenne ich mich mit C++ kein bisschen aus. Deswegen sagen mir weder diese Funktionen was noch die Variablen.
-
Forum: Programmieren allgemein
by DieDolly,
6. Apr 2019
Und wie rechne ich zurück (auf 96 DPI), dass ich so abspeichern kann, dass Windows nicht bei jedem Start neu hochskaliert? :(
Leider verstehe ich das da oben nicht.
Was funktioniert ist, das Formular kurz vorher zurück auf 96 DPI zu skalieren ABER ob das schön ist ... ich bezweifle es
// Routine zum beenden und speichern des Programms ...
ZuSchließendeUndSpeicherndeForm.ScaleBy(96,...
-
Forum: Programmieren allgemein
by DieDolly,
6. Apr 2019
Ich hole mir die aktuellen Formularwerte Width und Height direkt vom TForm beim speichern.
Ich würde die gerne umrechnen zurück auf 96 DPI aber ich weiß leider nicht wie. Versuche ergeben (wie oben geschrieben) sehr komische Werte die nicht korrekt sein können.
Genau das ist der Fall aktuell.
-
Forum: Programmieren allgemein
by DieDolly,
6. Apr 2019
Sowas denke ich auch. Kann es aber nicht belegen.
Was stelle ich dann mathematisch mit diesen beiden Informationen an?
Ich habe schon Dinge versucht wie NeueBreite = Prozentwert aus (AktuelleBreite, (AktuelleDPI minus 96) ) aber das klappt nicht und gibt einen Wert von rund 700 zurück statt 1000.
Ganz genau genommen ist mein Formular bei 96 DPI 1050 Pixel breit. Nach dem Rüberziehen...
-
Forum: Programmieren allgemein
by DieDolly,
6. Apr 2019
Wie führe ich eine solche normierte 96 DPI Speicherung aus?
Ich übergebe beim Speichern der Formulargröße Form123 an die entsprechende Prozedur, die anschließend AForm.Width und AForm.Height in eine Datei schreibt.
-
Forum: Programmieren allgemein
by DieDolly,
6. Apr 2019
Mir ist das gerade zum ersten mal aufgefallen.
Verschiebe ich mein Formular auf meinen 150% DPI-Monitor und beende das Programm, wird die Formulargröße viel zu groß gespeichert.
Was vorher width 1000 war ist jetzt 1500. Scheint normal zu sein. Aber wenn ich das Programm jetzt erneut starte, ist das Fenster nochmal größer als 1500.
Muss man beim Speichern unter HighDPI irgendwas beachten?