AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Methodenaufruf nur für Klassenmethoden und Konstruktoren
Thema durchsuchen
Ansicht
Themen-Optionen

Methodenaufruf nur für Klassenmethoden und Konstruktoren

Ein Thema von DelphiNewbie929 · begonnen am 15. Dez 2014 · letzter Beitrag vom 16. Dez 2014
Antwort Antwort
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#1

AW: Methodenaufruf nur für Klassenmethoden und Konstruktoren

  Alt 16. Dez 2014, 09:05
Hallo zusammen,
Wie schaffst Du es, mit 'Ceil' und 'Floor' zu bestimmen, ob Du eine ungerade oder gerade Anzahl von Bildpunkten hast? Poste mal deinen Code, gerne auch in einem anderen Thread.
Einfache Mathematik.

Quick and dirty mit einem Button und 3 Editfeldern zum Nachbauen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  liNewValue: Integer;
  lfValue: Extended;
begin

  lfValue := StrToInt(Edit1.Text) / StrToInt(Edit2.Text);

  if ((Ceil(lfValue) mod 2) = 0) then
   begin
    liNewValue := Ceil(lfValue);
   end
  else
   begin
    liNewValue := Ceil(lfValue) + 1;
   end;

  Edit3.Text := IntToStr(liNewValue);

end;
Wenn Du Ceil() nimmst, dann kommt nie 0 heraus, ausser der Dividend ist 0. Natürlich solltest Du auch noch vor der Teilung abfragen, ob der Divisor 0 ist, um einen Fehler zu vermeiden.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.

Geändert von BadenPower (16. Dez 2014 um 09:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Methodenaufruf nur für Klassenmethoden und Konstruktoren

  Alt 16. Dez 2014, 09:19
Also du benötigst ein abgewandelten Integer DIV
Delphi-Quellcode:
function IntCeilDiv( Val1, Val2 : Integer ) : Integer;
begin
  Result := Val1 div Val2;
  if not ( Val1 mod Val2 = 0 ) then
    Inc( Result );
end;
und kannst dann
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  liNewValue: Integer;
begin

  liNewValue := IntCeilDiv( StrToInt(Edit1.Text), StrToInt(Edit2.Text) );

  if not ( liNewValue mod 2 = 0 ) then
    Inc( liNewValue );

  Edit3.Text := IntToStr(liNewValue);

end;
Hab ich das so richtig verstanden?

UPDATE
So geht es auch und ist damit kurz und knackig und man sieht auch sofort, was beabsichtigt ist
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  liNewValue: Integer;
begin

  liNewValue := Ceil( StrToInt(Edit1.Text) / StrToInt(Edit2.Text) );

  if not ( liNewValue mod 2 = 0 ) then
    Inc( liNewValue );

  Edit3.Text := IntToStr(liNewValue);

end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (16. Dez 2014 um 09:23 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.199 Beiträge
 
Delphi 12 Athens
 
#3

AW: Methodenaufruf nur für Klassenmethoden und Konstruktoren

  Alt 16. Dez 2014, 09:20
(x mod 2) = 0 ... Du meinst also NOT Delphi-Referenz durchsuchenODD?

Zitat:
Delphi-Quellcode:
function IntCeilDiv( Val1, Val2 : Integer ) : Integer;
begin
  Result := Val1 div Val2;
  if Val1 mod Val2 <> 0 then
    Inc( Result );
end;
Immer aufrunden?

Delphi-Quellcode:
Result := (Val1 + 1) div 2;

Result := (Val1 + Val2 div 2) div Val2;
Vor dem Dividieren die Hälfte des Divisors hinzuaddiert, führt zu einem arithmetischem Aufrunden, da man den 0-Wert um die Hälfte (auf 0,5) verschoben hat. (oder wie auch immer man das auf Mathematikdeutsch ausdrückt)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (16. Dez 2014 um 09:24 Uhr)
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#4

AW: Methodenaufruf nur für Klassenmethoden und Konstruktoren

  Alt 16. Dez 2014, 10:29
Hallo zusammen,

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  liNewValue: Integer;
begin

  liNewValue := Ceil( StrToInt(Edit1.Text) / StrToInt(Edit2.Text) );

  if not ( liNewValue mod 2 = 0 ) then
    Inc( liNewValue );

  Edit3.Text := IntToStr(liNewValue);

end;
So geht's natürlich auch, wenn Du den Float-Wert nicht noch für andere Berechnungen benötigst.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  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 04:21 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