Autor |
Beitrag |
meisterjoda
Hält's aus hier
Beiträge: 4
|
Verfasst: 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
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.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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  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
      
Beiträge: 57
|
Verfasst: Do 02.06.05 13:47
kurz gefragt - HÄ????
ich versteh kein wort von dem was du von uns willst
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: 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
      
Beiträge: 57
|
Verfasst: Do 02.06.05 14:15
jetzt ergibts auch einen sinn 
|
|
bocholito
Hält's aus hier
Beiträge: 11
|
Verfasst: 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
      
Beiträge: 57
|
Verfasst: 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
|
Verfasst: Do 02.06.05 14:31
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
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: 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
      
Beiträge: 164
ME
D3Prof.-D6Standard
|
Verfasst: 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 
Hält's aus hier
Beiträge: 4
|
Verfasst: 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
      
Beiträge: 164
ME
D3Prof.-D6Standard
|
Verfasst: Do 02.06.05 14:57
Delphi-Quelltext 1: 2: 3:
| Memo1.Alignment:=taRightJustify; Memo1.Alignment:=taLeftJustify; Memo1.Alignment:=taCenterJustify; |
|
|
meisterjoda 
Hält's aus hier
Beiträge: 4
|
Verfasst: Do 02.06.05 14:59
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
|
Verfasst: 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.
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 public end; var Form1: TForm1; implementation {$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin halbiereSeite(841,1189, @Memo1); end;
end. |
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 TMemo(pmemo1^).Lines.add(floattostr(b)+' '+floattostr(h)); hilf := h; h := b; b := round(hilf/2); if h >= 105 then HalbiereSeite(b,h,pmemo1); end;
end. |
Moderiert von raziel: Code- durch Delphi-Tags ersetzt.
|
|
deccer
      
Beiträge: 57
|
Verfasst: Do 02.06.05 15:08
wozu den pointer auf das TMemo?
|
|
meisterjoda 
Hält's aus hier
Beiträge: 4
|
Verfasst: Do 02.06.05 17:39
es klappt JUHU 
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Do 02.06.05 20:38
Das geht noch einfacher (funktioniert aber vielleicht nicht):
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 (1189, 841, 0) End; |
|
|
bocholito
Hält's aus hier
Beiträge: 11
|
Verfasst: 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
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
      
Beiträge: 282
XP Prof
D6 Prof, D7 Personal, D7 Enterprise, D8 personal
|
Verfasst: Fr 03.06.05 07:45
Du könntest Dir auch direkt das Memo übergeben, wäre dann auch wiederverwendbar
Martin
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Fr 03.06.05 08:20
@bocholite: Ich wollte nur brillieren, indem ich immer Höhe x Breite angebe  .
Ok, auf die Abmessungen auf 1/100 mm anzugeben ist vielleicht ein wenig schwachsinnig.
|
|