Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Zugriffsverletzung bei Versuch Datenbank-Memofeld mit TQuery zu lesen (https://www.delphipraxis.net/171502-zugriffsverletzung-bei-versuch-datenbank-memofeld-mit-tquery-zu-lesen.html)

Aias 9. Nov 2012 07:16

Datenbank: Access • Version: 2000 • Zugriff über: BDE

Zugriffsverletzung bei Versuch Datenbank-Memofeld mit TQuery zu lesen
 
Hallo ...

ich lese mittels TQuery mehrere Access Datenbanktabellen aus, unter anderem folgende:

Delphi-Quellcode:
procedure TDBClient.SelectFeatsFromDB;
var
  query : TQuery;
  i    : integer;
  feat : TFeat;
begin
  query := m_dbServer.SelectQuery('SELECT * FROM Feats');
  while not query.Eof do begin
    feat := TFeat.Create;
    feat.ID := query.Fields[0].AsInteger;
    feat.Name := query.Fields[1].AsString;
    feat.Description := query.Fields[2].AsString;
    feat.Passive := query.Fields[3].AsBoolean;
    FFeatList.AddFeat(feat);
    query.next;
  end;//while not eof
end;
das Problem ist folgendes. Hinter query.Fields[2] verbirgt sich ein Datenbankfeld vom Typ "Memo", was anscheinend zu Problemen führt, da ich bei dieser Zeile eine Zugriffsverletzung erhalte (Zugriffsverletzung bei 4DA0F40F und Zugriff auf 000002E0). Ändere ich das Datenbankfeld auf den Typ "Text" wie beispielsweise hinter query.Fields[1], dann klappts. Aber ich brauche mehr als 255 Zeichen und folglich auch den Typ Memo. Was habe ich verbrochen? Kann mir da jemand helfen?

Ich arbeite auf einem 64-bit Windows 7 System. Als Entwicklungsumgebung benutze ich zur Evaluation eine Testversion von Embarcadero Delphi XE3. Dieses kann in der Testversion nur Win32 Programme Compilieren. Sollte ja aber eigentlich auch kein Problem darstellen. Oder muss ich unter den Compiler-Optionen was ändern? Ich bin da nicht so sattelfest.

Hoffe, es weiss jemand Rat.

Besten Dank
Andreas

selbes Thema auch unter:
http://www.entwickler-ecke.de/topic_...en_110544.html
http://forum.delphi-treff.de/showthr...Query-zu-lesen

Bernhard Geyer 9. Nov 2012 07:37

AW: Zugriffsverletzung bei Versuch Datenbank-Memofeld mit TQuery zu lesen
 
Wieso noch BDE? Für Access bietet sich ADO in Gestalt von ADOExpress/dbGo an.
Verursacht weniger Probleme als mit der Antiken-BDE darauf zuzugreifen.

Aias 9. Nov 2012 08:42

AW: Zugriffsverletzung bei Versuch Datenbank-Memofeld mit TQuery zu lesen
 
Es war ja auch noch alter Code ... danke, habs jetz auf ADO umgeschrieben und siehe da, das Problem mit dem Memo-Feld ist verschwunden.

Bernhard Geyer 9. Nov 2012 08:43

AW: Zugriffsverletzung bei Versuch Datenbank-Memofeld mit TQuery zu lesen
 
Zitat:

Zitat von Aias (Beitrag 1190462)
Es war ja auch noch alter Code ... danke, habs jetz auf ADO umgeschrieben und siehe da, das Problem mit dem Memo-Feld ist verschwunden.

BDE ist nun mal ein veraltete Technik die mit jeder neuen Windows-Version/Update mehr Probleme verursacht da sie seit ca. 10 Jahren nicht mehr gepflegt ist (von Anpassungen das sie überhaupt noch in neuen IDE-Versionen läuft abgesehen).


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