Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Absturz beim Zusammenfügen von Strings (https://www.delphipraxis.net/13374-absturz-beim-zusammenfuegen-von-strings.html)

Morfio 17. Dez 2003 09:12


Absturz beim Zusammenfügen von Strings
 
Hi,

ich habe schon wieder ein Problem: wenn ich einen String einer Variablen zuordne und an den String eine Variable vom Typ String hänge, bekomme ich beim Ablauf einen Fehler:

"Im Projekt BDB.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 004028E5 in Modul BDB.exe'. Lesen von Adresse 0123FFFD.'. Prozess wurde angehalten. Mit einzelnen Anweisungen oder Start fortsetzen."

Ich kann beim besten Willen keinen Fehler feststellen, hier einmal der Code:

Delphi-Quellcode:
procedure TfrmHilfe.cbKapitelChange(Sender: TObject);
var
   sql: Tsql;
   _myRes: PMySql_Res;
   _myRow: PMySql_Row;
   query: String;
   Items: array of Integer;
   Kapitel: String;
   i: Integer;
   Helper: String;
begin
   sql := Tsql.create;
   Kapitel := String(cbKapitel.Items.Objects[cbKapitel.ItemIndex]);
   if Kapitel = '' then
   begin
      query := 'SELECT id FROM HilfeKapitel ORDER BY Kapitel LIMIT 1';
      mysql_real_query(sql._myCon, PChar(query), Length(query));
      _myRes := mysql_store_result(sql._myCon);
      _myRow := mysql_fetch_row(_myRes);
      Kapitel := _myRow[0];
   end;
   if Kapitel <> '' then
   begin
      Edit1.Text := Kapitel; // <- das hier gibt er prima aus
      query := 'SELECT id, Headline FROM HilfeTexte WHERE KapitelID = ' + Kapitel; // <- hier ist dann der Fehler
{      mysql_real_query(sql._myCon, PChar(query), Length(query));
      _myRes := mysql_store_result(sql._myCon);
      SetLength(Items, mysql_num_rows(_myRes));
      for i := 0 to High(Items) do
      begin
         lbTexte.Items.AddObject(_myRow[1], TObject(_myRow[0]));
      end;}
   end;
end;
An der Variablen Kapitel kann es nicht liegen, da ich auch mal probiert habe, eine Variable mit anderem Namen zu nehmen (String) und dort einfach etwas 'reingeschrieben habe und dann query := '....' + variable machte. Er stürzte auch ab. Ich habe auch versucht, eine andere Variable als query mal zusätzlich zu benutzen, ging aber auch nicht.

Vielleicht kann mir einer von Euch helfen?

Vielen Dank,

Morfio ...

Morfio 17. Dez 2003 09:24

Re: Absturz beim Zusammenfügen von Strings
 
Hallo nochmal,

komischerweise funktioniert es so:

Delphi-Quellcode:
procedure TfrmHilfe.cbKapitelChange(Sender: TObject);
var
   sql: Tsql;
   _myRes: PMySql_Res;
   _myRow: PMySql_Row;
   query: String;
   Items: array of Integer;
   Kapitel: Integer;
   i: Integer;
   Helper: String;
begin
   lbTexte.Clear;
   sql := Tsql.create;
   Helper := String(cbKapitel.Items.Objects[cbKapitel.ItemIndex]);
   Kapitel := StrToInt(Helper);
   if Kapitel = 0 then
   begin
      query := 'SELECT id FROM HilfeKapitel ORDER BY Kapitel LIMIT 1';
      mysql_real_query(sql._myCon, PChar(query), Length(query));
      _myRes := mysql_store_result(sql._myCon);
      _myRow := mysql_fetch_row(_myRes);
      Kapitel := StrToInt(_myRow[0]);
   end;
   if Kapitel <> 0 then
   begin
      Edit1.Text := IntToStr(Kapitel);
      query := 'SELECT id, Headline FROM HilfeTexte WHERE KapitelID = ' + IntToStr(Kapitel);
      Edit1.Text := query;
      mysql_real_query(sql._myCon, PChar(query), Length(query));
      _myRes := mysql_store_result(sql._myCon);
      SetLength(Items, mysql_num_rows(_myRes));
      for i := 0 to High(Items) do
      begin
         _myRow := mysql_fetch_row(_myRes);
         lbTexte.Items.AddObject(_myRow[1], TObject(_myRow[0]));
      end;
   end;
end;
Irgendwie mache ich doch einen ganz großen Fehler, oder? Was mache denn falsch?

Morfio ...


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