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
Antwort Antwort
Seite 1 von 2  1 2      
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
Miniaturansicht angehängter Grafiken
lgs_rechner_158.jpg  
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Arraytypfehler

  Alt 17. Mär 2008, 17:34
Hast du dein Programm schon mal debuggt um zu sehen, an welcher Stelle der fehler auftritt?
Markus Kinzler
  Mit Zitat antworten Zitat
Kytrix

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

Re: Arraytypfehler

  Alt 17. Mär 2008, 17:40
hatte eigentlich die stelle markiert aber war wohl zu viel anderes mitmarkiert .... naja jetzt ist nur noch die stelle markiert (die fehlermeldung ist als anhang angefügt)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Arraytypfehler

  Alt 17. Mär 2008, 17:43
Delphi-Quellcode:
For i:= 0 to N-1 do
begin
  For j:= 0 to M-1 do
?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#5

Re: Arraytypfehler

  Alt 17. Mär 2008, 17:43
Entweder habe ich es übersehen, oder da fehlt ein SetLength()für das Matrixarray.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Arraytypfehler

  Alt 17. Mär 2008, 17:45
Du hast MatrixArray als dynamisches Array deklariert.
Ich habe kein Setlength(MatrixArray,..) gefunden.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Kytrix

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

Re: Arraytypfehler

  Alt 17. Mär 2008, 17:52
check ich gerade nicht was ihr meint
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#8

Re: Arraytypfehler

  Alt 17. Mär 2008, 17:55
SetLength(MatrixArray, <Größe 1>,<Größe 2>); Machst am Besten beim Programmstart bzw. dann, wenn Du weißt, wie groß die Größen sein sollen.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#9

Re: Arraytypfehler

  Alt 17. Mär 2008, 17:56
Du musst erst mit SetLength() Speicher für das dynamische Array MatrixArray reservieren, bevor Du es befüllen kannst, da dessen Größe ja nicht von vornherein bekannt ist.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Kytrix

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

Re: Arraytypfehler

  Alt 17. Mär 2008, 18:06
Delphi-Quellcode:
procedure TMain.BtRechnenClick(Sender: TObject);
var i, j: Byte;
begin
SetLength(MatrixArray, N, M);
For i:=1 to N do
begin
  For j:= 1 to M do
  Begin
    MatrixArray[i,j]:=StrToFloat(EditArray[i,j].Text);
  end;
end;
nun habe ich ne noch schlimmere fehlermeldung (siehe Anhang) .... ich bin am verzweifeln

Aber trotzdem DANKE euch =)
Miniaturansicht angehängter Grafiken
unbenannt_120.gif  
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 05:37 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