Hallo,
zou iemand mij kunnen helpen met een foutmelding die ik krijg bij gebruik van Teechart STD van Delphi 10.2 Tokio
ik ben bezig met een programma die "Multi language" is en de data uit een CSV (komma gescheiden) bestand komt.
Het deel waar de fout nu in ontstaat was in eerste instantie werkend.
Door het programma op te splitsen in DLL's is er nu een fout ontstaan in het deel van het programma waar verder niets aan gewijzigd is (dit deel wordt nog rechtstreeks aangeroepen vanuit het hoofd-programma).
het programma maakt gebruik van TChart van Delphi 10.2 zelf.
hieronder de sourcecode van het gedeelte waar de fout in ontstaat
Delphi Code:
procedure TViewForm.ShowChart(Sender: TObject);
var
I, II, III, Val: Integer;
Value: Double;
VRec: Array[1..4] of Integer;
function IntToDouble(Id: Integer): Double;
begin
Result := Double(Id);
end;
begin
if ChartView.SeriesCount > 0 then
for I := 0 to ChartView.SeriesCount - 1 do
ChartView.Series[I].Free;
case RChoice.ItemIndex of
0: begin // shutter metingen
ChartView.Title.Text.Clear;
ChartView.Title.Text.Add(Usr_Shutter);
for I := 1 to 4 do
VRec[I] := 2;
for I := 2 to XLS.RowCount - 1 do
begin
for II := 0 to 5 do
begin
if I = 2 then
begin
ChartView.AddSeries(TFastLineSeries);
ChartView.Series[II].Title := Prg_Headers[II];
ChartView.Series[II].Name := 'SLine' + IntToStr(II + 1);
end;
case II of
0, 1: Value := StrToFloat(XLS.Cells[II, I]);
2, 3,
4, 5: begin
if (VRec[II - 1] >= 2) then
begin
if (((II = 3) or (II = 5)) and (TryStrToFloat(XLS.Cells[2, VRec[II - 1]], Value))) or
(((II = 2) or (II = 4)) and (TryStrToFloat(XLS.Cells[1, VRec[II - 1]], Value))) then
begin
if Value = StrToInt(XLS.Cells[0, I]) then
Inc(VRec[II - 1])
else
if I = 2 then
Value := StrToFloat(XLS.Cells[II, 2])
else
Value := StrToFloat(XLS.Cells[II, VRec[II - 1]]);
end else
begin
Value := StrToFloat(XLS.Cells[II, VRec[II - 1]]);
Inc(VRec[II - 1]);
end;
end else Value := 0;
end;
end;
if (Value > 0) or ((I = 2) and (II < 2)) then
begin
ChartView.Series[II].AddXY(IntToDouble(I - 2), Value);
end;
end;
end;
end;
zodra de regel "ChartView.Series[II].AddXY(IntToDouble(I - 2), Value);" wordt aangeroepen verschijnt er een foutmelding
"Access violation in ..."(enz.) op dat moment bevatten de volgende variabelen de waardes II=0, I=2 en value=27 (dit laatste komt uit het CSV bestand)
Chartview is op dat moment wel aktief.
weet iemand hier een oplossing op?
b.v.d.
Peter
Bookmarks