Ich baue mir ein Vokabelprogramm.
Ich habe ein record Datensatz : TDatensatz
TDatenArray = array of TDatensatz;
Da klappt auch alles: Übergabe von Daten eines Stringgrids, speichern, laden, abfragen.
Jetzt wollte ich die Daten mittels eines zweiten Arrays alphabetisch sortieren lassen. Um dann die Datensätze im Stringrid sortiert auszugeben. Dort habe ich u.a. die Spalten Fach, Frage, Antwort.
-------------------
Nun zu meinem Problem:
In der procedure TForm1.Button1Click steigt der Debugger in der folgenden zweiten Zeile aus
Code: Alles auswählen
Daten[i].Frage := StringGrid1.Cells[1,i];
DatenDummy[i].FachDummy := StringGrid1.Cells[1,i] ;
Project project0024.exe hat Exception-Klasse >>External: SIGSEGV<< ausgelöst.
Was ich gefunden habe:
Das scheint ein Sammelbegriff für viele Fehler zu sein.
Und
Das ist einfach eine Speicherzugriffsverletzung, die vom Betriebssystem gemeldet wird.
---------------
Wichtig ist, das der Fehler nicht beim Start des Programms auftritt, sondern nur wenn der Button angecklickt wird.
Ich habe schon hin und her probiert, komme aber alleine nicht weiter.
Code: Alles auswählen
procedure TForm1.Button1FachClick(Sender: TObject);
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Grids,
StdCtrls, {Unit0024_1,} Unit0024_2, cscsv_785, windows;
type
TDatensatz = record
Fach : String;
Frage : String;
Antwort: String;
end;
TDatenArray = array of TDatensatz;
TDatensatzDummy = record
FachDummy : String;
FrageDummy : String;
AntwortDummy: String;
end;
TDatenDummyArray = array of TDatensatzDummy;
TForm1 = class(TForm)
Beenden: TButton;
Button1: TButton;
// etc.
private
{ private declarations }
public
{ public declarations }
end;
// Original
//Original
var
Form1 : TForm1;
var
AnzahlVokabeln: integer;
Daten: TDatenArray;
DatenDummy : TDatenDummyArray;
implementation
{$R *.lfm}
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
For i := 1 to AnzahlVokabeln -1 do
begin
Daten[i].Fach:= StringGrid1.Cells[1,i];
DatenDummy[i].FachDummy := StringGrid1.Cells[0,i] ;
end;
end;
Danke!
Gruß!
idefix