![]() |
Datenbank: MySQL • Version: 5 • Zugriff über: direct
FResult.FieldValue in Array
Hy,
ich bin noch ein ziehmlicher Anfänger in der Programmierung und hoffe ihr könnt mir bei meinen Startschwierigkeiten helfen. Ich versuche die Daten die in einer MySQL Datenbakn stehen auszulesen und in einem Array zu speichern. Ist das überhaupt möglich? Also zuerst habe ich nach der Anleitung von delphi-treff gearbeitet, was auch funktioniert hat. Nun möchte ich die Daten aber nicht in einer Tabelle ausgeben sondern in einem Array zwischenspeichern. Variable:
Delphi-Quellcode:
Die Verbindung steht auch soweit und auch die Abfrage ist erfolgreich:
type
Daten = record ID : string[150]; Titel : string[150]; Serie : string[150]; Staffel : string[150]; end; var Form1: TForm1; Ergebnis : array[1..20] of Daten;
Delphi-Quellcode:
Nun versuch ich die Ergebnisse in dem Array Ergebnis zu speichern:
if assigned(FResult) then begin
if FMysql.Status<>MYSQL_STATUS_READY then ShowMessage('Ein Ergebnis wurde unvollständig gelesen!'); FreeAndNil(FResult); end; q := 'SELECT * FROM videos WHERE Art = "3" ORDER BY Serie'; FResult := FMysql.query(q, true, ex); if assigned(FResult) then ShowMessage('Query: OK - Ergebnis gespeichert') else if ex then ShowMessage('Query: OK - ausgeführt') else ShowMessage('Query fehlgeschlagen: '+FMysql.LastError);
Delphi-Quellcode:
Und wenn ich diesen Befehl ausführe bricht der Debugger ab mit einem Prozessfehler beim lesen einer Adresse.
if assigned(FResult) then begin
if FResult.ResultType=rtStored then begin FResult.First; for i:=0 to FResult.RowsCount-1 do begin Ergebnis[i].ID := FResult.FieldValue(0); Ergebnis[i].Titel := FResult.FieldValue(1); Ergebnis[i].Serie := FResult.FieldValue(2); Ergebnis[i].Episode := FResult.FieldValue(3); FResult.Next; end; FResult.RecNo := cr; end; end; Ich weiß nicht ob ich den Aufbau der Abfrage richtig verstanden hab oder ob der Code 100%ig in Ordnung ist. Ich hoffe jemand kann mir einen Rat geben thx |
Re: FResult.FieldValue in Array
Herzlich willkommen in der Delphi-PRAXiS, Masterraven9.
Ein offensichtlicher Fehler ist wohl, dass du die Indizierung des Arrays vergessen hast:
Delphi-Quellcode:
Freundliche Grüße
// ...
for i:=0 to FResult.RowsCount-1 do if i < Length(Ergebnis) then begin Ergebnis[i].ID := FResult.FieldValue(0); Ergebnis[i].Titel := FResult.FieldValue(1); Ergebnis[i].Serie := FResult.FieldValue(2); Ergebnis[i].Episode := FResult.FieldValue(3); FResult.Next; end else raise Exception.Create('array too small, some results dropped'); // ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz