AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi wie fügt man in ein zwedimensionales array werte ein
Thema durchsuchen
Ansicht
Themen-Optionen

wie fügt man in ein zwedimensionales array werte ein

Ein Thema von felix1806 · begonnen am 17. Mai 2007 · letzter Beitrag vom 17. Mai 2007
Antwort Antwort
Seite 1 von 3  1 23      
felix1806

Registriert seit: 13. Mai 2007
24 Beiträge
 
#1

wie fügt man in ein zwedimensionales array werte ein

  Alt 17. Mai 2007, 12:33
hallo ich habe bis jetzt folgendes geschrieben
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, Grids, ExtCtrls;

type
  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    GroupBox1: TGroupBox;
    EdSparbetrag: TEdit;
    EdFestzins: TEdit;
    EdMindestlaufzeit: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    procedure BitBtn1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
var i,Mindestlaufzeit:Integer;
 Festzins,Zinsen,Ende,Anfang:Real;
begin
  Anfang:=StrToFloat(EdSparbetrag.Text);
  Festzins:=StrToFloat(EdFestzins.Text)/100;
  Mindestlaufzeit:=StrToInt(EdMindestlaufzeit.Text);
  StringGrid1.RowCount:=Mindestlaufzeit+1;
  for i:=1 to Mindestlaufzeit do
   with StringGrid1 do
    begin
     Cells[0,i]:=IntToStr(i);
     Cells[1,i]:=FloatToStrF(Anfang,ffFixed,10,3);
     Zinsen:=Anfang*Festzins;
     Cells[2,i]:=FloatToStrF(Zinsen,ffFixed,10,3);
     Ende:=Anfang+Zinsen;
     Cells[3,i]:=FloatToStrF(Ende,ffFixed,10,3);
     Anfang:=Ende;
     end;
   end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 with StringGrid1 do
  begin
   Cells[0,0]:='Jahr';
   Cells[1,0]:='Anfang';
   Cells[2,0]:='Zinsen';
   Cells[3,0]:='Ende';

   end;

 end;
procedure Einspeichern;
begin
end;
end.
ich will jetzt das ganze so umändern dass ich die daten nicht mehr direkt in ein stringgrid sondern erst in ein array einspeise(weil ich dann noch die werte für einen graphen brauche), das will ich mit der procedure Einspeichern tun, allerdings weiß ich jetzt nicht wie ich das mit den globalen variablen und dem 2D-array
machensoll: Meine Probleme sind: -Erzeugung des Arrays mit den globalen variablen
-Erzeugung des Arrays mit i vielen Cells
Ich habe leider so gut wie keine Erfahrung mit Arrays und hatte schon mal nachgefragt wie man die Arrays erstellt(http://www.delphipraxis.net/internal...t.php?t=110225, konnte das auch nachvollziehen kann das aber nicht auf meinen Fall anwenden.
Vielen Dank für Eure Hilfe
Gruß Felix
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: wie fügt man in ein zwedimensionales array werte ein

  Alt 17. Mai 2007, 12:37
Ist die Anzahl an Zellen im gesamten Programm fest (->statisches Array) oder ändert sie sich (->dynamisches Array)?
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
felix1806

Registriert seit: 13. Mai 2007
24 Beiträge
 
#3

Re: wie fügt man in ein zwedimensionales array werte ein

  Alt 17. Mai 2007, 12:43
also eigentlich ändert sie sich je nach eingabe in das edit feld EdMindestlaufzeit weil dann das Kapital um die Anzahl der Jahre verzinst wird, das array muss sich also um die anzahl der jahre erweitern... ich weiß nicht wie...
vielen dank für dein interesse
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: wie fügt man in ein zwedimensionales array werte ein

  Alt 17. Mai 2007, 12:46
Sind beide Dimensionen dynamisch oder nur eine?
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
felix1806

Registriert seit: 13. Mai 2007
24 Beiträge
 
#5

Re: wie fügt man in ein zwedimensionales array werte ein

  Alt 17. Mai 2007, 12:51
nur die zweite dimension "nach unten" die erste ist fix ([0,0]jahr[1,0]anfang[2,0]zinsen[3,0]ende)
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: wie fügt man in ein zwedimensionales array werte ein

  Alt 17. Mai 2007, 12:55
Das ist sehr praktisch. Dann definierst du dein Array einfach mit
var meinArray: array[0..3] of array of double; Wenn dann die tatsächliche Anzahl an Zeilen feststeht, führst du einfach ein setlength(meinArray, anzahlzeilen) durch.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
felix1806

Registriert seit: 13. Mai 2007
24 Beiträge
 
#7

Re: wie fügt man in ein zwedimensionales array werte ein

  Alt 17. Mai 2007, 12:57
ja mein problem is jetzt nur das in den quelltext oben einzubinden, mit den globalen variablen...
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: wie fügt man in ein zwedimensionales array werte ein

  Alt 17. Mai 2007, 13:01
Entweder du definierst es als globale Variable oder als Feld von TForm1.
In BitBtn1Click führst du dann das selbe mit dem Array durch, was du zur Zeit mit dem Stringgrid machst (natürlich ohne die Konvertierungen zu strings).
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#9

Re: wie fügt man in ein zwedimensionales array werte ein

  Alt 17. Mai 2007, 13:14
Ich glaube, 2-dimensionale Arrays bieten sich für dein Fall überhaupt nicht an. Das, was du versuchst im Speicher abzubilden, nennt sich eine Datenliste.

Delphi-Quellcode:
Cells[0,0]:='Jahr';
Cells[1,0]:='Anfang';
Cells[2,0]:='Zinsen';
Cells[3,0]:='Ende';
Deine Anzahl der Spalten ist fest, die der Zeilen variabel.

Stell dir vor, du hast 30 Spalten zu verwalten, oder es kommt einfach morgen eine dazu. Weisst Du dann noch genau, dass Spalte 2 die Zinsen beinhaltet. Was, wenn du eine Spalte hast, die kein Float ist, sondern z.B. einen String beinhaltet, oder ein Boolean, oder auf irgendein anderes Objekt verweist.

Erstell dir eine Klasse (oder von mir auch gern ein Record, wenns keine Funktionalität braucht):

Delphi-Quellcode:
TZinsen = class
public
   Anfang, Ende : TDateTime ;
   Zinsen : double ;
end ;
Dazu eine TObjectList (irgendwie ist die heut bei mir sehr beliebt), die du in deiner Form im public Teil definierst:

Delphi-Quellcode:
TForm1 = class (TForm)
...
public
   ZinsenList : TObjectList ;
end ;
Kommt eine Zinsenzeile dazu, dann geht das so:

Delphi-Quellcode:
procedure TForm1.NeuerZinssatz ;
var
  Zinsen : TZinsen ;
begin
    Zinsen := TZinsen.Create ;
    Zinsen.Anfange := now ;
    Zinsen.Ende := EncodeDate (2007,12,31) ;
    Zinsen.Zinsen := 8.15 ;
    ZinsenListe.Add (Zinsen) ;
end ;
Die Klasse hat übrigens den Vorteil gegenüber einem einfachen Record, dass du auch direkt innerhalb der Klasse Berechnungen ausführen kannst, die nur das aktuelle Objekt betreffen.

ObjectListen sind einfach zu durchlaufen, zu zählen, und auch nachher wieder freizugeben, denn die enthaltenen Objekte von TZinsen werden gleich mit freigegeben.
  Mit Zitat antworten Zitat
felix1806

Registriert seit: 13. Mai 2007
24 Beiträge
 
#10

Re: wie fügt man in ein zwedimensionales array werte ein

  Alt 17. Mai 2007, 13:21
na ja ich probiers jetzt erst mal mit nem array weil ich das alles überschaubar halte es wird einkleines programm und in record und listen muss ich mich dann erst mal einarbeiten und ich ahbe leider nicht so viel zeit...

wie mach ich das dann an der stelle StringGrid1.RowCount:=Mindestlaufzeit+1; weil meinArray.RowCount:=Mindestlaufzeit+1; funktioniert nicht...
  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 21:27 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