![]() |
[Android] record befüllen -> AV kommt nicht im Delphi an
Moin, ich habe ein Record, welches Folgendermaßen aussieht:
Delphi-Quellcode:
Nun habe ich noch ein Array mit diesem Record, welches ich befülle.
type
TRec_Austausch = record MaxStep:Integer; Importname, MSSQL, WHERE, WhereKunden, SQLITE, Key, Tabelle, SQLITE_Delete, Key2, OhneFeldAenderndeFunktion, MSSQLTabelle, SQLAfterExec:String; Filt, Zurueck:Boolean; end;
Delphi-Quellcode:
Die Länge des Arrays setze ich vor dem befüllen auf die Maximale anzahl an schritten. (Die länge stimmt auch, habe ich mehrmals überprüft)
AAustausch:Array of TRec_Austausch;
Nun befülle ich die Records eines nach dem Anderen wie folgt:
Delphi-Quellcode:
Das funktioniert auch ca 20 mal. Dann kommt mein Problem.
With AAustausch[Schritt] do
Begin MaxStep := MaxSchritt; Importname := 'Kundenstamm'; MSSQL := 'Select Kunden_Nr, Sortierfeld, Name1, Name2, Strasse, '+ 'PLZ, Ort, Telefon, EMail, Creation_Date, Changed_Last, '+ 'Info, Changed_By, Homepage, Autotelefon, Vertreter, FGR_Nr, Anrede, Adressart, Inaktiv, Sperrkennzeichen from Kundenst '+ ' inner Join MOBILE_Kunden_'+IntToStr(Station_ID)+' M on m.kdn = kundenst.Kunden_Nr where '; WHERE := ' 1=1 '; WhereKunden := ''; SQLITE := 'Select Kunden_Nr, Sortierfeld, Name1, Name2, Strasse, '+ 'PLZ, Ort, Telefon, EMail, Creation_Date, Changed_Last, '+ 'Info, Changed_By, Homepage, Autotelefon, Vertreter, FGR_Nr, Anrede, Adressart, Inaktiv, Sperrkennzeichen '+ 'from Kundenst'; Key := 'Kunden_Nr'; Tabelle := 'Kundenst'; SQLITE_Delete := ReadINITAB('Datenaustausch', 'Filter_SQLITE'); Filt := True; Key2 := ''; OhneFeldAenderndeFunktion := ''; Zurueck := True; MSSQLTabelle := ''; End; das Nächste befüllen erfolgt nach dem selben Schema. Nur das es hier beim setzen der Variable "Importname" knallt. Das besondere daran: die AV wird mir in der App angezeigt, allerdings erscheint diese nie im Delphi. Hier sieht es so aus als wenn der Debug vorgang mit F9 fortgesetzt wurde, also der Pfeil verschwindet komplett und taucht auch nicht wieder auf. Auf meinen iOS Geräten, die ich hier zur verfügung habe funktioniert das einwandfrei (iPad 3. Generation (iOS 9.3), iPhone 5 (iOS 10.3.3). Auf den Android Geräten nicht (Samsung Note 10.1 (Android 4.1.2) und Alcatel Shine Lite (Android 6.0)) Hat da wer eine Idee? oder braucht ihr noch mehr Infos? |
AW: [Android] record befüllen -> AV kommt nicht im Delphi an
Wie sieht denn Schritt aus ?
Läuftst du in einer externen Schleife von 0 ... 19 durch ? Mit 1 ... 20 wird es wohl nicht funktionieren. Rollo |
AW: [Android] record befüllen -> AV kommt nicht im Delphi an
Ich habe meinen Fehler gerade gefunden! Ich habe es wohl irgendwie geschafft meine Variable "Schritt" in einem schritt doppelt zu erhöhen. Dementsprechend ist der Fehler logisch.
Jetzt bestehen bei mir nur noch 3 Fragen: 1. Warum Tritt der Fehler nicht auf iOS auf? Da läuft das Ganze einwandfrei durch. (mit dem doppelten erhöhen etc) 2. Warum kommt die AV nicht im Delphi an? 3. Warum tritt die AV erst bei der Zuweisung des 2. Wertes im Record auf und nicht direkt bei dem Versuch auf dieses Record zuzugreifen? |
AW: [Android] record befüllen -> AV kommt nicht im Delphi an
Mysteriös - einen ähnlichen Bug entdeckte ich auch. Er trat auf, als ein Record neuerdings mit R := Default(TMyRecord) initialisiert wurde. Der Effekt war, dass in einem anderen Programmteil eine for ... next Schleife zwei Durchläufe machen wollte, für I = 0 und für I = 1, obwohl der Endwert = 0 war.
Der Quelltext des "Auslösers" und des aufgetretenen "Fehlers" liegen weit auseinander, es war nicht einfach eine Haupt- und eine Subroutine. Entweder ein Bug im Memory Manager, oder ein anderer unentdeckter Seiteneffekt im eigenen Code. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:13 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