AGB  ·  Datenschutz  ·  Impressum  







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

Arraytypfehler

Ein Thema von Kytrix · begonnen am 17. Mär 2008 · letzter Beitrag vom 17. Mär 2008
 
Kytrix

Registriert seit: 26. Nov 2007
54 Beiträge
 
#1

Arraytypfehler

  Alt 17. Mär 2008, 17:31
Delphi-Quellcode:
unit mMain;

interface

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

type
  TMain = class(TForm)
    LaSpalten: TLabel;
    LaZeilen: TLabel;
    EdSpalten: TEdit;
    EdZeilen: TEdit;
    BtMatrix: TButton;
    ScrollBoxMatrix: TScrollBox;
    BtRechnen: TButton;
    LiBoxLoesungen: TListBox;
    procedure BtMatrixClick(Sender: TObject);
    procedure EdSpaltenChange(Sender: TObject);
    procedure EdZeilenChange(Sender: TObject);
    procedure FormCanResize(Sender: TObject; var NewWidth,
      NewHeight: Integer; var Resize: Boolean);
    procedure BtRechnenClick(Sender: TObject);
    procedure ShowRealErgebnis;
    function Rechnen: Boolean;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Main: TMain;
  M, N: Integer; //Matrix Variablen
  EditArray: array[1..200, 1..200] of TEdit;
  MatrixArray: array of array of Real;
  Ergebnisse: array of Real;

implementation

{$R *.dfm}

procedure TMain.BtMatrixClick(Sender: TObject);
Var GleichPanel: TPanel;
    Anzahl, Variablen: TLabel;
    I, J: Byte;
begin
  GleichPanel:=TPanel.Create(ScrollBoxMatrix);
  GleichPanel.Parent:=ScrollBoxMatrix;
  GleichPanel.Left:=(M*40)+50;
  GleichPanel.Top:=20;
  GleichPanel.Width:=2;
  GleichPanel.Height:=N*30;
  GleichPanel.Caption:='';
  for i:= 1 to N do
    begin
      for j:= 1 to M do
        begin
          EditArray[i,j]:= TEdit.Create(ScrollBoxMatrix);
          EditArray[i,j].Parent:=ScrollBoxMatrix;
          EditArray[i,j].Width:=35;
          EditArray[i,j].Height:=25;
          EditArray[i,j].Left:=J*40;
          EditArray[i,j].Top:=I*30;
        end;
      end;
  for I:=1 to N do
  begin
    EditArray[i,j]:= TEdit.Create(ScrollBoxMatrix);
    EditArray[i,j].Parent:=ScrollBoxMatrix;
    EditArray[i,j].Width:=35;
    EditArray[i,j].Height:=25;
    EditArray[i,j].Left:=(J*40)+30;
    EditArray[i,j].Top:=I*30;
    Anzahl:=TLabel.Create(ScrollBoxMatrix);
    Anzahl.Parent:=ScrollBoxMatrix;
    Anzahl.Left:=15;
    Anzahl.Top:=I*30;
    Anzahl.Font.Style:=[fsBold];
    Anzahl.Font.Size:=10;
    Anzahl.Caption:=IntToStr(I);
  end;
  for J:=1 to M do
  begin
    Variablen:=TLabel.Create(ScrollBoxMatrix);
    Variablen.Parent:=ScrollBoxMatrix;
    Variablen.Left:=J*40;
    Variablen.Top:=10;
    Variablen.Font.Style:=[fsBold];
    Variablen.Font.Size:=11;
    Variablen.Caption:='x'+IntToStr(J);
  end;
end;

procedure TMain.EdSpaltenChange(Sender: TObject);
begin
If EdSpalten.Text<>'then
M:=StrToInt(EdSpalten.Text);
end;

procedure TMain.EdZeilenChange(Sender: TObject);
begin
If EdZeilen.Text<>'then
N:=StrToInt(EdZeilen.Text);
end;

procedure TMain.FormCanResize(Sender: TObject; var NewWidth,
  NewHeight: Integer; var Resize: Boolean);
begin
ScrollBoxMatrix.Width:=Main.ClientWidth -18;
ScrollBoxMatrix.Height:=Main.ClientHeight -94;
LiBoxLoesungen.Width:=Main.ClientWidth -353;
end;

procedure TMain.BtRechnenClick(Sender: TObject);
var i, j: Byte;
begin
For i:=1 to N do
begin
  For j:= 1 to M do
  Begin
    [B]MatrixArray[i,j]:=StrToFloat(EditArray[i,j].Text);[/B] //****#######****// Hier Bekomme ich den Fehler gemeldet
  end;
end;
  LiBoxLoesungen.Items.BeginUpdate;
  LiBoxLoesungen.MultiSelect := true;
  LiBoxLoesungen.SelectAll;
  LiBoxLoesungen.DeleteSelected;
  LiBoxLoesungen.MultiSelect := false;
  LiBoxLoesungen.Items.EndUpdate;
  if not Rechnen then
  begin
    ShowMessage('Keine Loesung moeglich');
    exit;
  end;
  ShowRealErgebnis;
end;

procedure TMain.ShowRealErgebnis;
var
  i1: Byte;
begin
  LiBoxLoesungen.Items.BeginUpdate;
  for i1 := Low(ergebnisse) to High(ergebnisse) do
  begin
    LiBoxLoesungen.Items.Add(chr(97 + i1) + ' = ' + FloatToStr(Ergebnisse[i1]));
  end;
  LiBoxLoesungen.Items.EndUpdate;
  Beep;
  Beep;
  Beep;
end;

function TMain.Rechnen: Boolean;

var
  i1, i2, i3, i4, i5: Byte;
begin
  result := true;
  try

    for i3 := 0 to M do
    begin
      for i2 := i3 to M do
        for i1 := N downto 0 do
          Matrixarray[i1, i2] := Matrixarray[i1, i2] / Matrixarray[i3, i2];

      for i4 := i3 + 1 to M do
        for i5 := N downto 0 do
          Matrixarray[i5, i4] := Matrixarray[i5, i3] - Matrixarray[i5, i4];
    end;

    SetLength(ergebnisse, N);
    for i1 := High(ergebnisse) downto Low(ergebnisse) do
      ergebnisse[i1] := Matrixarray[N, i1];
    for i1 := High(ergebnisse) downto 1 do
      for i2 := i1 downto 1 do
        ergebnisse[i2 - 1] := ergebnisse[i2 - 1] - (ergebnisse[i1] * Matrixarray[i1, i2 - 1]);
  except
    result := false;
  end;
end;


end.
Ich verstehe nicht wo der Fehler liegt
Angehängte Grafiken
Dateityp: jpg lgs_rechner_158.jpg (69,7 KB, 24x aufgerufen)
  Mit Zitat antworten Zitat
 


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 16:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz