AGB  ·  Datenschutz  ·  Impressum  







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

Diese prozedur gängig machen

Ein Thema von LkZ · begonnen am 26. Nov 2004 · letzter Beitrag vom 27. Nov 2004
Antwort Antwort
Seite 1 von 3  1 23      
LkZ

Registriert seit: 26. Mai 2004
75 Beiträge
 
Delphi 6 Enterprise
 
#1

Diese prozedur gängig machen

  Alt 26. Nov 2004, 14:34
Hi!!

ich hab da ne prozedur, sie funktioniert (syntaktisch), aber nicht sinn gemäß.

Hier mal eine kostprobe:
Quellcode: zusammenfalten | markieren
Delphi-Quellcode:
 procedure TForm1.DrawModel(Canvas:TCanvas;AtomNr,Rad:integer);
var x0,y0,n,k:integer;
    a,sa:Real;
begin
x0:=Form1.ClientWidth div 2; {Mitte der Form finden}
y0:=Form1.ClientHeight div 2;
a:=ANr / 2; {Formel für bestimmung von Elektronen pro Schale: 2*n^2}
sa:=sqrt(a); {Gleichung aufstellen: nach n auflösen; ges.:n=Anzahl SchAle}
n:=round(sa); {Atom Nummer=2*n^2   | /2}
                                             {<=> Atom Nummer/2=n^2  | Wurzel}
                                             {<=> Wurzel(Atom Nummer/2) = n}

Canvas.Ellipse(x0-Rad,y0-Rad,x0+Rad,y0+Rad); {Für den (Atom)Kern}
for k:=1 to n do {n gefunden}
begin
  Canvas.Ellipse(x0-(Rad*k),y0-(Rad*k),x2+(Rad*k),y0+(Rad*k));{Kreise zeichnen mit gleichem Abstand}
  end;
end;
bitte nicht verwechseln: Rad=Radius des kreises in Pixel
er zeichnet statt n Kreise nur einen..

ich weiss nicht mehr, was daran so rumzufeilen ist, obwohl das echt simpel ist...
Naja danke im Voraus

MfG LkZ
Immer probiern!
  Mit Zitat antworten Zitat
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#2

Re: Diese prozedur gängig machen

  Alt 26. Nov 2004, 15:02
was ist denn ANr und x2 ?
Nico Müller
  Mit Zitat antworten Zitat
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#3

Re: Diese prozedur gängig machen

  Alt 26. Nov 2004, 15:03
ich denke das der alte kreis immer übermalen wird ... ich kanns aber nicht genau sagen weil ich Anr und x2 nicht weiß
Nico Müller
  Mit Zitat antworten Zitat
LkZ

Registriert seit: 26. Mai 2004
75 Beiträge
 
Delphi 6 Enterprise
 
#4

Re: Diese prozedur gängig machen

  Alt 26. Nov 2004, 15:04
ja..ne sind tippfehler

x2=x0 und ANr=AtomNr (Parameter der prozedur)

sorry

MfG
Immer probiern!
  Mit Zitat antworten Zitat
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#5

Re: Diese prozedur gängig machen

  Alt 26. Nov 2004, 15:05
"[Fehler] Unit1.pas(31): Inkompatible Typen: 'Integer' und 'Extended'"

mach mal atomnr zu ner real zahl

AtomNr:=5 / 2; {Formel für bestimmung von Elektronen pro Schale: 2*n^2 AtomNr:=5 / 2; macht aber nicht das nach der formel


ich würde a auch mal initialisieren...
Nico Müller
  Mit Zitat antworten Zitat
LkZ

Registriert seit: 26. Mai 2004
75 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: Diese prozedur gängig machen

  Alt 26. Nov 2004, 15:07
naja, also es macht keinen Unterschied.. immernoch das selbe problem
Immer probiern!
  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
 
#7

Re: Diese prozedur gängig machen

  Alt 26. Nov 2004, 15:08
Ich sehe nicht, wieso Anr eine real-Zahl sein sollte.

Nachtrag: Ok, zu langsam


Nachtrag: bei mir geht der Code einwandfrei. Zumindest wird ein Kreis gezeichnet, der abhängig von "Rad" und "AtomNr" seinen Radius ändert.


Was genau geht denn nicht?
  Mit Zitat antworten Zitat
LkZ

Registriert seit: 26. Mai 2004
75 Beiträge
 
Delphi 6 Enterprise
 
#8

Re: Diese prozedur gängig machen

  Alt 26. Nov 2004, 15:13
Hier ist nochmal der "richtige" code (ohne Tippfehler )

Delphi-Quellcode:
procedure TForm1.DrawModel(Canvas:TCanvas;AtomNr:Real;Rad:integer);
var x0,y0,n,k:integer;
    a,sa:Real;
begin
x0:=Form1.ClientWidth div 2; {Mitte der Form finden}
y0:=Form1.ClientHeight div 2;
a:=AtomNr / 2; {Formel für bestimmung von Elektronen pro Schale: 2*n^2}
sa:=sqrt(a); {Gleichung aufstellen: nach n auflösen; ges.:n=Anzahl SchAle}
n:=round(sa); {Atom Nummer=2*n^2   | /2}
                    {<=> Atom Nummer/2=n^2  | Wurzel}
                    {<=> Wurzel(Atom Nummer/2) = n}

Canvas.Ellipse(x0-Rad,y0-Rad,x0+Rad,y0+Rad); {Für den (Atom)Kern}
for k:=1 to n do {n gefunden}
 begin
  Canvas.Ellipse(x0-(Rad*k),y0-(Rad*k),x0+(Rad*k),y0+(Rad*k));
                                                      {Kreise zeichen mit gleichem Abstand}
  end;
end;
abgesehen von der Formel, weiss ich, wegen den rundungen
bei der for-to-do Schleife müsste eigentl. k:=2 to n, weil die zeile vor der schleife den Atomkern zeichnet. wenn k:=1 und Rad*k = Rad, dann haut das nicht wirklich hin. Toll ....2. Problem

MfG
Immer probiern!
  Mit Zitat antworten Zitat
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#9

Re: Diese prozedur gängig machen

  Alt 26. Nov 2004, 15:14
war nur beiläufig...

aber ich glaube das dzdas besser mit ner function machen solltest - vl geht das gezeichnete verloren ...
Nico Müller
  Mit Zitat antworten Zitat
LkZ

Registriert seit: 26. Mai 2004
75 Beiträge
 
Delphi 6 Enterprise
 
#10

Re: Diese prozedur gängig machen

  Alt 26. Nov 2004, 15:19
Zitat von Nicodius:
war nur beiläufig...

aber ich glaube das dzdas besser mit ner function machen solltest - vl geht das gezeichnete verloren ...
Function mit welchem rückgabewert? Der macht doch nix ausser zeichnen, nix berechnen.
Oder man macht es im OOP, da hab ich aber meine mängel.

MfG
Immer probiern!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 01:23 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