AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Array als Feld

Ein Thema von Dragon27 · begonnen am 26. Mai 2008 · letzter Beitrag vom 26. Mai 2008
Antwort Antwort
Seite 1 von 2  1 2      
Dragon27

Registriert seit: 20. Nov 2003
Ort: Aßling
543 Beiträge
 
Delphi XE6 Enterprise
 
#1

Problem mit Array als Feld

  Alt 26. Mai 2008, 12:52
Hallo zusammen,

ich hatte Anfangs Probleme auf die Daten von MySQL vernünftig zuzugreifen. Nun denke ich habe ich es geschafft jedoch besteht noch ein kleines Problem bei meinem Mehrdimensionalen Array in dem ich die Abfragen speichere. Dies ist mein Code:

Die Procedure, die die Daten ins Array schreibt:
Delphi-Quellcode:


type TFeld = array of array of String;

//::::::::::::::::::::::::::::::::::::::

Procedure TSqlVerbindung.GetErgebnis(a: TFeld);
var i, j: integer;
    af: TMysql_FieldDef;
    cr: integer;
begin
  if assigned(FResult) then begin
    if FResult.ResultType=rtStored then begin
      cr := FResult.RecNo;
      SetLength(a, FResult.FieldsCount+1,FResult.RowsCount+1);
      for i:=0 to FResult.FieldsCount-1 do begin
        af := FResult.FieldDef(i)^;
        a[i+1,0] := af.Name;
      end;
      FResult.First;
      for i:=0 to FResult.RowsCount-1 do begin
        if FResult.RecNo=cr then
          a[0,i+1] := '*'
        else
          a[0,i+1] := '';
        for j:=0 to FResult.FieldsCount-1 do
          a[j+1,i+1] := FResult.FieldValue(j);
        FResult.Next;
      end;
      FResult.RecNo := cr;
    end
    else begin
      SetLength(a, FResult.FieldsCount+1,2);
      for i:=0 to FResult.FieldsCount-1 do begin
        af := FResult.FieldDef(i)^;
        a[i+1,0] := af.Name;
      end;
      for j:=0 to FResult.FieldsCount-1 do
        a[j+1,1] := FResult.FieldValue(j);
    end;
  end;
end;
So rufe ich das ganze auf:
Delphi-Quellcode:

procedure TSQL.Button1Click(Sender: TObject);
var vSQL:Tsqlverbindung;
s:TFeld;
begin

vsql:=Tsqlverbindung.Create;
vsql.SelectDB('Kom');
vsql.SendBefehl('SELECT * FROM iuser i;');
vsql.GetErgebnis(s);
showmessage(s[1][1]);
vsql.Free;
end;
Leider bekomme ich eine Zugriffsverletzung aber warum?

Danke für Eure Hilfe!
Delphi is ......... DELPHI!!
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Problem mit Array als Feld

  Alt 26. Mai 2008, 12:54
Wo genau kommt die AV?
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Problem mit Array als Feld

  Alt 26. Mai 2008, 12:55
In welcher Zeile?
Markus Kinzler
  Mit Zitat antworten Zitat
Dragon27

Registriert seit: 20. Nov 2003
Ort: Aßling
543 Beiträge
 
Delphi XE6 Enterprise
 
#4

Re: Problem mit Array als Feld

  Alt 26. Mai 2008, 12:57
Hallo,

Hier kommt der Fehler:

Delphi-Quellcode:
procedure TSQL.Button1Click(Sender: TObject);
var vSQL:Tsqlverbindung;
s:TFeld;
begin

vsql:=Tsqlverbindung.Create;
vsql.SelectDB('IndusXtreme');
vsql.SendBefehl('SELECT * FROM iuser i;');
vsql.GetErgebnis(s);
showmessage(s[1][1]); //Hier kommt der Fehler
vsql.Free;
end;
Fehlermeldung:
Zitat:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Project1.exe ist eine Exception der Klasse EAccessViolation mit der Meldung 'Zugriffsverletzung bei Adresse 004D7CC5 in Modul 'Project1.exe'. Lesen von Adresse 00000004' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------
Delphi is ......... DELPHI!!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Problem mit Array als Feld

  Alt 26. Mai 2008, 12:59
Und wo in .GetErgebnis()?
Markus Kinzler
  Mit Zitat antworten Zitat
Dragon27

Registriert seit: 20. Nov 2003
Ort: Aßling
543 Beiträge
 
Delphi XE6 Enterprise
 
#6

Re: Problem mit Array als Feld

  Alt 26. Mai 2008, 13:01
Hallo,

im Compiler wird mir die makierte Zeile als Fehler angezeigt mehr nicht.

Danke
Delphi is ......... DELPHI!!
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Problem mit Array als Feld

  Alt 26. Mai 2008, 13:01
dann setze nen Breakpoint auf die Zeile
vsql.SendBefehl('SELECT * FROM iuser i;'); und debugge mal bis du zu der genausen Zeile kommst in der die AV auftritt. Mit F7 kannst du zB in .GetErgebnis() reinspringen.
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
Dragon27

Registriert seit: 20. Nov 2003
Ort: Aßling
543 Beiträge
 
Delphi XE6 Enterprise
 
#8

Re: Problem mit Array als Feld

  Alt 26. Mai 2008, 13:06
Hallo,

also wenn ich das so debugge springt er mir bei GetErgebnis rein und in die erste If Abfrage. Dann springt er einfach zum ende von GetErgebnis und ich bekomme die Fehlermeldung .

Danke Gruß
Delphi is ......... DELPHI!!
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: Problem mit Array als Feld

  Alt 26. Mai 2008, 13:11
if assigned(FResult) then begin .. dann wird FResult nil sein und Deinem Array steht nicht drinnen.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Problem mit Array als Feld

  Alt 26. Mai 2008, 13:12
dann könnte es sein das FResult nichts zugewiesen wurde und somit dein Array leer ist und somit ein direkter Zugriff mit s[1][1] fehlschlägt... nur so eine vage Vermutung
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:30 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