AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi AppendRecord-Parameter zusammensetzen
Thema durchsuchen
Ansicht
Themen-Optionen

AppendRecord-Parameter zusammensetzen

Ein Thema von Partikelecho · begonnen am 20. Mär 2012 · letzter Beitrag vom 21. Mär 2012
Antwort Antwort
Partikelecho

Registriert seit: 2. Dez 2011
14 Beiträge
 
Delphi 6 Enterprise
 
#1

AppendRecord-Parameter zusammensetzen

  Alt 20. Mär 2012, 07:27
Hallo ihr Delphianer,

Ich arbeite gerade an zwei Units zum Übersetzen einer bestehnden bzw. neuen Anwendung (Unit 1: Speichert alle Formulare und dazugehörige relevante Objekte mit Texteigenschaften wie Caption; Unit 2: Übersetzt nun mit diesen Informationen die Anwendung)

Ich arbeite mit DBISAM Database und Table-Objekten, welche ich zur Laufzeit der Unit erzeuge (und freigebe^^).
Die Datensätze werden dann per StartTransaction/Commit und AppendRecord zusammengebaut.

Ich benötige nun eine Möglichkeit den Parameter, den ich AppendRecord übergeben muss, ähnlich wie einen String zusammenzubauen. der Übergabeparameter ist laut Delphi Hilfe ein array of const - aber was ist das? Array vom "Datentyp const"? O.o
Online finde ich zu dem auch öfter den Begriff TVarRec. Ich kann damit noch nicht so richtig was anfangen.

Hat jemand eine Möglichkeit, wie ich den Parameter als Variable übergebe und die dann selbst befülle?
Folgende Werte werden dabei eingetragen: Integer, Text und null
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.153 Beiträge
 
Delphi 12 Athens
 
#2

AW: AppendRecord-Parameter zusammensetzen

  Alt 20. Mär 2012, 07:36
array of const ist ein spezielles Open-Array, wo von Delphi, bei Übergabe, bzw. bei Aufruf der Funktion, "irgendwelche" Typen automatisch in TVarRec umgewandelt werden.

Für die Übergabe kannst du ein array of TVarRec verwenden
und beim Auslesen kannst du die Array-Werte als TVarRec interpretieren.

Beachte aber, du bist selber für die Speicherverwaltung zuständig, vorallem für die Freigabe von eventuell reserviertem Speicher.



Aber: Warum so umständilch?

Verwende parametrisierte SQL-Statements.
Also mit Append beginnen, dann die Parameter über FindField einzeln zuweisen und zum Schluß ein Post.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (20. Mär 2012 um 07:42 Uhr)
  Mit Zitat antworten Zitat
Partikelecho

Registriert seit: 2. Dez 2011
14 Beiträge
 
Delphi 6 Enterprise
 
#3

AW: AppendRecord-Parameter zusammensetzen

  Alt 20. Mär 2012, 17:08
Und er sah den Wald vor lauter Bäumen nicht, vielen Dank für diese Denkstütze.

Lösung meiner Frage:
- CurrentForm wird in einer Schleife befüllt (Screen.Forms[i])
- GetPropValue ermittelt den Wert einer Komponente + Eigenschaft
- UsedLanguages ist ein Array mit den verwendeten Sprachen der Ausgangsanwendung

Delphi-Quellcode:
text := GetPropValue(CurrentForm.FindComponent(SL_Object[j]),SL_Property[k]);
TBL_Lng_Texts.Append;
TBL_Lng_Texts.FindField('TXT_ID').AsInteger := prp_count;
for l:=0 to High(UsedLanguages) do
  TBL_Lng_Texts.FindField('TXT_'+UsedLanguages[l]).Clear;
TBL_Lng_Texts.FindField('TXT_'+Language).AsString := text;
TBL_Lng_Texts.Post;
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

AW: AppendRecord-Parameter zusammensetzen

  Alt 20. Mär 2012, 17:16
Anstelle von FindField sollte man besser FieldByName verwenden.
FieldByName prüft zusätzlich ob das Feld überhaupt existiert und würde, falls nicht vorhanden, eine lesbare Exception werfen.
Bei Verwendung von FindField kann es dagegen zu einer unschönen Access-Violation-Exception kommen.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: AppendRecord-Parameter zusammensetzen

  Alt 20. Mär 2012, 17:46
Vor einiger Zeit habe ich mal gelesen (IIRC im Blog von Marco Cantu), dass es auch noch einen gehörigen Schwung Performance bringt, wenn man die Felder einmalig mit FieldByName ermittelt, lokalen TField-Variablen zuweist und dann nur noch die anspricht. Ich habe das noch nicht selbst ausprobiert, aber für mich klingt das recht logisch.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Partikelecho

Registriert seit: 2. Dez 2011
14 Beiträge
 
Delphi 6 Enterprise
 
#6

AW: AppendRecord-Parameter zusammensetzen

  Alt 21. Mär 2012, 06:36
Danke für die Hinweise, ich werde es nachher ausprobieren.

Das mit den lokalen TField-Variablen spar ich mir, da es nur eine Handvoll Durchläufe obiger Schleife geben wird.
Aber ich notier mir das mal, klingt interessant.
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 06:27 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