Autor Beitrag
meisterjoda
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Do 02.06.05 13:45 
also ich muss heut nochn programm fertich machen....

es geht darum alle a0-a7 formate in einem memo auszugeben....aber es muss als rekursion gemacht sein

so fang ich erstmal an...dann muss ich irgendwie..imma jeweils die größere seite halbieren und in nem meo ausgeben aber geordnet,...keine ahnung wie ich das hinbekommen soll

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
function (a0h,a0b:real):real;
begin

end;



procedure TForm1.Button1Click(Sender: TObject);
var a0h,a0b:real;

begin
a0h:=121.2;
a0b:=86.4;


end;


ich komm damit nicht klar..kann mir einer helfen ?
a0h is die höhe von a0...a0b die breite


Zuletzt bearbeitet von meisterjoda am Do 02.06.05 14:12, insgesamt 1-mal bearbeitet
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Do 02.06.05 13:47 
Hallo!

Bitte ändere den Titel des Topics, da er wenig über das eigentlich Thema verrät. Hier der entsprechende Absatz aus den Delphi-Forum.de Richtlinien:

Richtlinien:
1.2 Beiträge
Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist.[...]

Einfach oben bei Deinem ersten Beitrag auf user defined image klicken und den Titel ändern. Dank Dir!

Grüße
Christian :-)

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
deccer
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 57



BeitragVerfasst: Do 02.06.05 13:47 
kurz gefragt - HÄ????
ich versteh kein wort von dem was du von uns willst
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 02.06.05 14:08 
Er meint Papierformate DIN A0 bis DIN A7.
Solange er aber den Titel nicht ändert, gibts von mir keine Info.
deccer
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 57



BeitragVerfasst: Do 02.06.05 14:15 
jetzt ergibts auch einen sinn :)
bocholito
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Do 02.06.05 14:21 
Hausaufgabe?

soviel ich weiss ist DIN A4 296 x 210 mm. Also A0=1184 x 840 und A7=105x74.

Dann musst du halt bei einer Seite anfangen die Funktion aufzurufen und das andere Ende als abbruchbedingung der Rekursion definieren.
Deine Hausaufgabe solltest du aber trotzdem selber machen.
deccer
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 57



BeitragVerfasst: Do 02.06.05 14:24 
er brauch ja blos bei A0 anfangen und dann immer nur die breite/höhe zu halbieren ... oder?

zwei a1 ergeben ein a0
zwei a2 ergeben ein a1
zwei a3 ergeben ein a2
...
bocholito
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Do 02.06.05 14:31 
ausblenden Quelltext
1:
2:
3:
hilf   := h;
h      := b;
b      := hilf/2;


musst du aber trotzdem wissen wann er sich selbst nicht mehr aufrufen darf, nämlich wenn h=105
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 02.06.05 14:34 
Von Groß nach klein funktioniert es wie folgt:
Die Höhe des kleineren ist gleich der Breite des größeren Formats.
Die Breite des kleineren ist gleich der Höhe durch Wurzel aus 2.
Blackheart
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 164

ME
D3Prof.-D6Standard
BeitragVerfasst: Do 02.06.05 14:46 
DIN A Papierformate [ DIN-Norm 476, Vorzugsreihe A, beschnitten ]

Norm für Papierformate, die durch das Deutsche Institut für Normung e.V. (DIN) 1922 in der DIN-Norm 476 festgelegt wurde. Alle A-Formate haben ein Seitenverhältnis von der Seitenlänge zur Diagonallänge eines Quadrats, also ein Verhältnis 1 zu Wurzel aus 2, was einem Seitenverhältnis 1:1,414 entspricht. Dadurch ist es möglich, einen DIN A0-Papierbogen (entspricht einem Quadratmeter) verlustfrei zu teilen. Das Verhältnis Breite zu Höhe beträgt immer 5:7.

DIN-A Formate (beschnittenes Format, Breite x Höhe) in Millimeter:

DIN A0 = 841 mm x 1189 mm
DIN A1 = 594 mm x 0841 mm
DIN A2 = 420 mm x 0594 mm
DIN A3 = 297 mm x 0420 mm
DIN A4 = 210 mm x 0297 mm (Deutsches Briefformat)
DIN A5 = 148 mm x 0210 mm
DIN A6 = 105 mm x 0148 mm
DIN A7 = 074 mm x 0105 mm
DIN A8 = 052 mm x 0074 mm
meisterjoda Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Do 02.06.05 14:49 
so ich habs soweit das ich 4 werte ausgeben kann

ich hab mal improviesiert und arbeite mit einem wert undzwa dem der höhe von a0

ich hab jetz die höhe der din a0-din a2-din a4 und din a6 ausgegeben ^^
na ma schaun das bekomm ich schon hin.


frage wie kann ichn in einem memofeld bestimmten ob ers links oder rechts augibt?
Blackheart
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 164

ME
D3Prof.-D6Standard
BeitragVerfasst: Do 02.06.05 14:57 
ausblenden Delphi-Quelltext
1:
2:
3:
Memo1.Alignment:=taRightJustify; //rechts
Memo1.Alignment:=taLeftJustify; //links
Memo1.Alignment:=taCenterJustify; //Mitte
meisterjoda Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Do 02.06.05 14:59 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
function din (a:real):real;
begin
if a<=74 then
din:=1
else
begin
form1.Memo1.Lines.Add(floattostr(a));
din:=din(a/2);
end;

end;



procedure TForm1.Button1Click(Sender: TObject);
var test,ausgabe:real;

begin
test:=1189;
ausgabe:=din(test);

end;


so siehts erstmal aus....nich alle werte aber immerhin ein anfang...komm aber grad nich weiter.
bocholito
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Do 02.06.05 15:01 
OK, neue Anwendung erstellen, ein Button und ein Memo drauf. Rekursive Procedure ist in Unit 2 ausgelagert und damit du's nicht usen musst ein Pointer auf das Memo übergeben.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, unit2;
type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}

  procedure TForm1.Button1Click(Sender: TObject);
  begin
    // Aufruf der externen Prozedur
    halbiereSeite(841,1189, @Memo1);
  end;

end.



ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
unit Unit2;
interface
uses stdctrls, sysutils;
  type
    PTMemo = ^TMemo;
  procedure HalbiereSeite(b,h:double; pmemo1 : PTMemo);
implementation

  procedure HalbiereSeite(b,h:double; pmemo1 : PTMemo);
  var
    hilf : double;
  begin
    // Erstmal aktuelles Format ausgeben
    TMemo(pmemo1^).Lines.add(floattostr(b)+'   '+floattostr(h));
    // Neue Seite berechnen
    hilf := h;
    h := b;
    b := round(hilf/2);
    // rekursion wenn nicht abbruchbedingung erreicht
    if h >= 105 then
      HalbiereSeite(b,h,pmemo1);
  end;

end.


Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt.
deccer
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 57



BeitragVerfasst: Do 02.06.05 15:08 
wozu den pointer auf das TMemo?
meisterjoda Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Do 02.06.05 17:39 
es klappt JUHU :D
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Do 02.06.05 20:38 
Das geht noch einfacher (funktioniert aber vielleicht nicht):
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
Procedure TForm1.DINA (aHoehe, aBreite : Real; aFormat : Integer);
Begin
  memo1.lines.add (Format ('DIN A%d = %8.2f x %8.2f mm',[aFormat, max (aHoehe, aBreite), Min (aHoehe, aBreite)]));
  IF aFormat < 7 Then
    DINA (aBreite, aHoehe / 2, aFormat + 1);
End;

Procedure TForm1.Button1Click (Sender : TObject);
Begin
  DINA (11898410)
End;
bocholito
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 03.06.05 07:16 
Pointer auf TMemo, weil ich die eigentliche Routine in einer anderen Unit untergebracht habe. Damit ich diese andere Unit auch in anderen Programmen verwenden kann übergebe ich einen Pointer, damit wird vermieden, dass ich in der uses klauses die erste unit einbinden muss.
Ich mach das immer so eben wegen der Wiederverwendbarkeit.


Ja alzaimar, das schaut ganz elegant aus. Aber die min und max sind überflüssig und die Teilung muss noch gerundet werden. also
ausblenden Quelltext
1:
2:
3:
  memo1.lines.add (Format ('DIN A%d = %8.2f x %8.2f mm',[aFormat, aBreite, aHoehe]));
  IF aFormat < 7 Then
    DINA (aBreite, round(aHoehe / 2), aFormat + 1);
Martin77
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 282

XP Prof
D6 Prof, D7 Personal, D7 Enterprise, D8 personal
BeitragVerfasst: Fr 03.06.05 07:45 
Du könntest Dir auch direkt das Memo übergeben, wäre dann auch wiederverwendbar

Martin
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Fr 03.06.05 08:20 
@bocholite: Ich wollte nur brillieren, indem ich immer Höhe x Breite angebe :bawling:.
Ok, auf die Abmessungen auf 1/100 mm anzugeben ist vielleicht ein wenig schwachsinnig.