Einzelnen Beitrag anzeigen

Pow3rus3r

Registriert seit: 17. Apr 2012
43 Beiträge
 
Delphi XE Professional
 
#3

AW: Fehler "access violation" - keine Ahnung, warum...

  Alt 14. Aug 2012, 12:54
.. es mag ja sein, dass Du den Code auswendig kennst
Wir jedoch nicht.

Grüße
Klaus
Ich weiß nicht, ob der Code hier hilfreich ist, da die Prozedur auf einige öffentliche Variablen zugreift und der gesamte Code gute 3000 Zeilen hat.

Hier mal die Prozedur, die den fehler rauswirft:
Delphi-Quellcode:
procedure TForm1.btnstartmanipulationsClick(Sender: TObject);
var
  i: integer;
  y: integer;
  slFile: TStringlist;

begin
  { Verbindungsaufbau }
  return := COM_TcpOpen(zeiger, ipAddress, port);
  { evtl. laufende Manipulationen stoppen und Stringlist initialisieren }
  return := COM_StopRbsManipulationReq(zeiger);
  slFile := TStringList.Create;
  try
    slFile.LoadFromFile(strfilename);

    y := 0;
    { Manipulationen an Box übertragen }
    for i := low(man1) to high(man1) do
    begin
      SetLength(manipulationlist, y+1);
      manipulationlist[y].TriggerType := strtoint(slFile[man1[i].zeile + 3]);
      manipulationlist[y].TriggerMode := strtoint(slFile[man1[i].zeile + 4])+1;
      manipulationlist[y].TriggerSource := strtoint(slFile[man1[i].zeile + 5]);
      manipulationlist[y].TriggerValue := strtoint(slFile[man1[i].zeile + 6]);
      manipulationlist[y].TriggerHysterese := strtoint(slFile[man1[i].zeile + 7]);
      manipulationlist[y].DelayValue := strtoint(slFile[man1[i].zeile + 8]);
      manipulationlist[y].DelayType := strtoint(slFile[man1[i].zeile + 9]);
      manipulationlist[y].SequenceNumber := strtoint(slFile[man1[i].zeile + 10]);
      manipulationlist[y].ManipulationType := strtoint(slFile[man1[i].zeile + 11]);
      manipulationlist[y].ManipulationDuration := strtoint(slFile[man1[i].zeile + 12]);
      manipulationlist[y].ManipulationDurationType := strtoint(slFile[man1[i].zeile + 13]);
      manipulationlist[y].ManipulationMode := strtoint(slFile[man1[i].zeile + 14]);
      manipulationlist[y].ManipulationTarget := strtoint(slFile[man1[i].zeile + 15]);
      manipulationlist[y].ManipulationTargetValue := 0;
      manipulationlist[y].ManipulationValue1 := strtoint(slFile[man1[i].zeile + 17]);
      manipulationlist[y].ManipulationValue2 := strtoint(slFile[man1[i].zeile + 18]);
      manipulationlist[y].ManipulationValue3 := strtoint(slFile[man1[i].zeile + 19]);

      // Einzelne Signalmanipulation speichern/hochladen zu Box
      return := COM_RbsManipulationReq(zeiger, manipulationlist[y]);
      y := y + 1;
    end;
    // Manipulationen starten
    return := COM_StartRbsManipulationReq(zeiger);
  finally
    slFile.Free;
  end;

end;
  Mit Zitat antworten Zitat