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 2 von 3     12 3      
Benutzerbild von Jelly
Jelly

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

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

  Alt 17. Mai 2007, 14:28
Mit Listen hast du das rowcount Problem nicht.
Dein 2D Array musst du mit SetLength dynamisch vergrössern. Aber vertue dich nicht, sonst knallen dir Exceptions um die Ohren.

Nimm eine Liste. Es ist doch schon alles erklärt. Warum plagst du dich mit unflexiblen Array rum, wenn du eine dynamische Struktur verwalten musst. Die Liste nimmt dir doch all die Aufgaben ab.
  Mit Zitat antworten Zitat
felix1806

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

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

  Alt 17. Mai 2007, 14:48
irgenwie steh ich gerade auf dem schlauch denn ich versteh nicht an welcher stellen man die einzlenen quellcodeteile einfügen muss und wie man sie in andere procedures einfügt (ich bin absoluter neuling auf diesem gebiet), viellicht könntest du die gerade in meinen quellcode oben einfügen damit ich das prinzip verstehe ansonsten bringt mir die beste liste nichts
danke
gruß felix
  Mit Zitat antworten Zitat
Apollonius

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

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

  Alt 17. Mai 2007, 14:56
Benutzt du jetzt Arrays oder Listen?
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
 
#14

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

  Alt 17. Mai 2007, 15:21
listen
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

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

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

  Alt 17. Mai 2007, 15:23
Zitat von felix1806:
listen
Ich bereit mal was vor... Aber uch nur weil heut Feiertag ist
  Mit Zitat antworten Zitat
felix1806

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

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

  Alt 17. Mai 2007, 15:32
danke weil ich hab gerade net die peilung
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

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

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

  Alt 17. Mai 2007, 15:52
Hier der Unitcode:

3 Sachen, die für dich interessant sein dürften:
  • Die Klasse Zinsen enhält die Informationen zu einem Jahr. Bemerke die Eigenschaft Ende in der Klasse, die beim Lesen einfach dem Aufruf einer internen Funktion entspricht, denn Ende kannst du immer sehr leicht aus Anfang un Zinsen berechnen. Also gibt es keinen Grund, Ende als Parameter zu speichern.
  • Die Darstellung im StringGrid wurde von der Berechnung getrennt. Als Parameter gibts in ShowListe einen List : TObjectList. Hier musst du also ein Objekt von TObjectlist übergeben, das dann, insofern dort nur TZinsen Objekte enthalten sind, dargestellt
    wird.
  • Da eine TObjectList beliebige Objekte aufnehmen kann, musst du beim Auslesen prüfen ob es sich um ein TZinsen Element handelt. Wenn ja, so kannst du das Element als TZinsen casten, so wie ich es z.B. in ShowListe zeige

Delphi-Quellcode:
unit Unit24;

interface

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

type
  TZinsen = class
  private
    FJahr: integer;
    FAnfang: double;
    FZinsen: double;
    function GetEnde: double;
  public
     property Jahr : integer read FJahr write FJahr ;
     property Anfang : double read FAnfang write FAnfang ;
     property Zinsen : double read FZinsen write FZinsen ;
     property Ende : double read GetEnde ;
  end;

  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    edSparbetrag: TEdit;
    edFestzins: TEdit;
    edMindestLaufzeit: TEdit;
    StringGrid1: TStringGrid;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
  private
    procedure ShowListe(Liste: TObjectList);
    { Private declarations }
  public
    { Public declarations }
    ZinsListe : TObjectList ;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
var i,Mindestlaufzeit:Integer;
Festzins, Anfang:Double;
Zins : TZinsen ;
begin
  // Eingaben aus Feldern lesen
  Anfang:=StrToFloat(EdSparbetrag.Text);
  Festzins:=StrToFloat(EdFestzins.Text)/100;
  Mindestlaufzeit:=StrToInt(EdMindestlaufzeit.Text);

  // ObjectList füllen
  ZinsListe.Clear ;
  for i:=1 to Mindestlaufzeit do begin
     Zins := TZinsen.Create ;
     Zins.Jahr := i ;
     Zins.Anfang := Anfang ;
     Zins.Zinsen := Anfang * Festzins ;
     // Zins.Ende braucht nicht gesetzt zu werden, da dies sehr leicht
     // aus Anfang und Zinsen berechnet werden kann
     // dafür gibts in TZinsen die ReadOnly Eigenschaft Ende, die im Grunde eine Funktion aufruft
     // somit stellst du sicher, dass der Inhalt konsistent bleibt. Denn wann immer
     // du Anfang oder Zinsen veränderst, so wird Ende automatisch beim nächsten Lesen
     // korrekt neu berechnet

     // Ab damit in die Liste
     ZinsListe.Add(Zins) ;
     Anfang := Zins.Ende ;
  end;

  // Damit wäre alles berechnet... Fehlt noch die Darstellung
  ShowListe (Zinsliste) ;
end;

procedure TForm1.ShowListe (Liste : TObjectList) ;
var
  i: Integer;
  Zins : TZinsen ;
begin
     Stringgrid1.ColCount := 4 ;
     StringGrid1.RowCount := 1 + Liste.Count ;
     StringGrid1.cells[0,0] := 'Jahr' ;
     StringGrid1.cells[1,0] := 'Anfang' ;
     StringGrid1.cells[2,0] := 'Zinsen' ;
     StringGrid1.cells[3,0] := 'Ende' ;

     for i := 0 to Liste.Count - 1 do begin // der Listenindex beginnt bei 0 !!!
          if Liste[i] is TZinsen then begin
                Zins := Liste[i] as TZinsen ;
                StringGrid1.cells[0,i+1] := format ('%d',[Zins.Jahr]) ;
                StringGrid1.cells[1,i+1] := format ('%.2m',[Zins.Anfang]) ;
                StringGrid1.cells[2,i+1] := format ('%.2m',[Zins.Zinsen]) ;
                StringGrid1.cells[3,i+1] := format ('%.2m',[Zins.Ende]) ;
          end else
             raise exception.Create ('Ungültiges Objekt in Objektliste.') ;
     end;

     StringGrid1.FixedCols := 0 ;
     StringGrid1.FixedRows := 1 ;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
     ZinsListe := TObjectList.Create ;
end;

{ TZinsen }

function TZinsen.GetEnde: double;
begin
     Result := Anfang + Zinsen ;
end;

end.
  Mit Zitat antworten Zitat
felix1806

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

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

  Alt 17. Mai 2007, 16:05
VIELEN DANK FÜR DIE MÜHE!!!!!!!!!!!!!!!!! Ich schauhe es mir jetzt mal in Ruhe an (bin keiner der einfach den kramm einfügt ohne die sachen zu verstehen, sonst gibts später nur probleme) und melde mich dann, aber vielen Dank noch mal echt super denn so langsam versteh ichs vielleicht....
  Mit Zitat antworten Zitat
felix1806

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

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

  Alt 17. Mai 2007, 17:34
Zitat:
Exception EClassNotFound in Modul Project1.exe bei 000182AE. Klasse TImage nicht gefunden
kommt als Fehlermeldung wenn ich die Unit über den Debugger staten will. Weiß jemand warum??? Danke
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

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

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

  Alt 17. Mai 2007, 17:37
Wo bitte schön kommt im Code ein TImage vor
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 13:34 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