Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Prism Programm für Mathe-Facharbeit (https://www.delphipraxis.net/82719-programm-fuer-mathe-facharbeit.html)

Admirandis 18. Dez 2006 18:42


Programm für Mathe-Facharbeit
 
Liste der Anhänge anzeigen (Anzahl: 2)
Moin allerseits!

Ich schreibe in Mathe meine Facharbeit über das Lösen von Gleichungssystemen mit dem Gauß-Jordan Algorithmus! Der Algorithmus selber ist nicht so ein besonderes Problem, aber ich habe eine Reset Funktion eingebaut, mit der man das ganze Programm zurücksetzen kann um wieder neue Gleichungen etc einzugeben! Bisher hat das auch alles wunderbar funktioniert, aber seitdem ich eine neue Beispielroutine gecodet habe kommt immer die Fehlermeldung "Zugriffsverletzung bei Adresse 004031DE in Modul....". Und ich habe leider nicht die leiseste Ahnung, wie das da hineingekommen ist! Deswegen wollte ich euch mal den Code schicken und fragen, ob ihr da was sehen könnt! Würde mich über Antworten freuen!

Admirandis

PS: Den Quellcode findet ihr in der "knappen" Fassung unten, den ganzen lade ich noch als Anhang hoch!

PPS: Falls ich hier im falschen Forum für Mathe bin: sorry :|


Erstmal ein grooooßer Variablenblock:
Delphi-Quellcode:
var
  Form1: TForm1;
   lblcnt, lblhgt, xcnt, vorzcnt, maxwidth1, maxwidth2: integer;
    gleichung, determinante, lsg, ergebnis: array[1..99] of TLabel;
     x, y: Array[1..100, 1..100] of extended;
      g: Array[1..100, 1..100] of string;
       e: Array[1..100] of extended;
        vargl: Array[1..100] of integer;
Das ist die Procedure, die die Zufallsgleichungen erstellt

Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var
 cnt, cnt2, ak, pm: integer;
  zahl: extended;
   inp: string;
begin

ak := 3+random(7);

for cnt := 1 to ak do
   begin
      for cnt2 := 1 to ak do
       begin
       pm := random(2);
       zahl := random(50);
       if pm = 1 then inp := inp+'+' else inp := inp+'-';
       inp := inp+floattostr(zahl);
       end;
     inp := inp+'='+inttostr(random(100));
     input.Text := inp;
     button1.Click;
     inp := '';
    end;
end;
Und last but not least die Procedure zum Resetten

Delphi-Quellcode:
procedure TForm1.Button5Click(Sender: TObject);
var
frecnt, cnt1, cnt2: integer;
begin

for cnt1 := 1 to 100 do
  for cnt2 := 1 to 100 do
      begin
        x[cnt1, cnt2] := 0;
        y[cnt1, cnt2] := 0;
        g[cnt1, cnt2] := '';
        e[cnt1] := 0;
        vargl[cnt1] := 0;
      end;

for frecnt := 1 to 99 do
        begin
         gleichung[frecnt].Free;
         determinante[frecnt].Free;
         lsg[frecnt].Free;
        end;

lblcnt := 0;
lblhgt := 70;
vorzcnt := 0;
label1.Caption := '1';
form1.Height := 227;
form1.Width := 503;

end;
Ich hoffe ihr habt ein paar Antworten für mich... Hoffentlich bis bald! Admirandis

boserPascal 18. Dez 2006 18:57

Re: Programm für Mathe-Facharbeit
 
Hallo,

dass klingt mir ganz danach als würde es bei den Free-Methoden krachen, ersetze sie durch eine lösch-Methoden wie clear. Also das du nur den Inhalt zurücksetzt. Ich denke das ist das was du willst.

Angel4585 18. Dez 2006 19:00

Re: Programm für Mathe-Facharbeit
 
kannst du das in ZIP hohladen? ich glaub es haben nicht alle hier RAR :roll:

so nu hab ich erstma ne Frage:

zu welchem Zeitpunkt genau tritt der Fehler auf? hast ma Zeilenweise durchlaufen?

Zu rotem Kasten: Ich würde auch sagen das du statt free was anderes machen solltest, ich nehm da immer die Funktion "FreeAndNil(label1)" oder so(ist das auch ne Funktion oder ne Prozedur? ka aber au egal hier)

Admirandis 18. Dez 2006 19:13

Re: Programm für Mathe-Facharbeit
 
So, also jetzt ist es auch als Zip hochgeladen! Sorry, hab nicht weit genug gedacht!

Jetzt zu der Free Methode: Habs mal anders ausprobiert: Funktioniert 1a! Nur da kommt schon das neue Problem zur Tür hereinspaziert:

Ich hab das Prog auf ein verhältnismäßig kleines Formular gebaut. Wenn ich es resette, wird es wieder so groß wie am Anfang! Das liegt daran, dass die zur Laufzeit erstellten Label ja noch existieren, da ich ihnen einfach nur caption := '' zugewiesen hab! Werde jetzt aber mal die Funktion von Angel4585 probieren danke an ihn!

Danke auch an Boser Pascal für den Tipp mit den Free Routinen! Werd mich jetzt gleich mal ans Werk machen und schauen, ob ihr Recht behaltet ^^ Ich hoffe es zumindest! Die Facharbeit muss am 26. Januar fertig... :coder:

Nochmals viele Dank an euch!

Grüße

Admirandis

Admirandis 18. Dez 2006 19:19

Re: Programm für Mathe-Facharbeit
 
Also, das mit dem freeandnil hat bestens geklappt! Vielen Dank nochmals!

Eigentlich sollte die Free Routine ja auch gehen, aber wenn Delphi nicht mag, dann mag es halt net!

Grüße

Admirandis

Angel4585 18. Dez 2006 19:22

Re: Programm für Mathe-Facharbeit
 
Zitat:

Zitat von Admirandis
Ich hab das Prog auf ein verhältnismäßig kleines Formular gebaut. Wenn ich es resette, wird es wieder so groß wie am Anfang! Das liegt daran, dass die zur Laufzeit erstellten Label ja noch existieren, da ich ihnen einfach nur caption := '' zugewiesen hab!

setz doch die positionen der Labels mit .Left und .Top ;)

Edit: Ich wünsche mir einen funktionierenden roten Kasten :)

Admirandis 18. Dez 2006 20:04

Re: Programm für Mathe-Facharbeit
 
Hab des mit dem versetzen von den Labels schon vorher versucht, aber interessanter Weise ist dann wieder der gleiche Fehler gekommen! Frag mich nicht wieso, ich verstehs auch nicht und ja, es ist unlogisch ^^

Aber da das Problem jetzt gelöst ist, braucht mich das ja nicht mehr zu interessieren!

Grüße

Thomy


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:59 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