AGB  ·  Datenschutz  ·  Impressum  







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

Variable dynamisch übergeben oder so...

Ein Thema von Ducksoul · begonnen am 26. Feb 2010 · letzter Beitrag vom 26. Feb 2010
Antwort Antwort
Ducksoul

Registriert seit: 19. Apr 2006
Ort: Ilmenau
87 Beiträge
 
RAD-Studio 2009 Pro
 
#1

Variable dynamisch übergeben oder so...

  Alt 26. Feb 2010, 10:49
Hallo,

ich wusste nicht wie ich das Topic am Besten benennen sollte. Zu meinem Problem:

Ich habe eine Funktion, welche dynamisch in einer For-Schleife mehrere Tabellen nach einem CodeMaster in eine Datenbank schreiben soll. Es wird also erst ein Dummy mit entsprechendem Tablename erstellt, dann geprüft welche Felder nach CodeMaster noch hinzugefügt, bzw. gelöscht werden sollen etc... Der Funktion, welche diese Felder ermittelt werden folgende Sachen übergeben:

GetFieldsToChange(cm, slTStruct, slFields); cm ist hierbei die Variable für den CodeMaster.
Mein Problem nun: Die Codemaster sind in Konstanten gespeichert, welche ihre Bezeichnung durch 'DPv42_' + Tabellennamen erhalten. Ich habe nun lediglich den Tabellennamen, kann mir dann daraus den Konstantennamen für den Codemaster der jeweiligen Tabelle ermitteln. Toll.. Dann hab ich ihn als String vorliegen. Und wie sag ich Delphi jetzt, dass das eigentlich der Name der Konstante ist, welche ich übergeben möchte und kein String?


Hoffe, dass ich das Problem verständlich erklärt hab.

Gruß
Franz
Franz
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Variable dynamisch übergeben oder so...

  Alt 26. Feb 2010, 10:53
Zitat von Ducksoul:
Und wie sag ich Delphi jetzt, dass das eigentlich der Name der Konstante ist, welche ich übergeben möchte und kein String?
Garnicht,

da Delphi keine Namen von Konstanten einkompiliert und demnach diese Namen in der EXE nicht existieren.


Du kannst höchstens eine Liste anlegen, mit den Namen (als String) und Verknüpfungen zu den Konstanten (genauer gesagt zu deren Inhalt) und mußt dann in dieser Liste suchen.

[edit] grammatik *grrrr*
$2B or not $2B
  Mit Zitat antworten Zitat
Ducksoul

Registriert seit: 19. Apr 2006
Ort: Ilmenau
87 Beiträge
 
RAD-Studio 2009 Pro
 
#3

Re: Variable dynamisch übergeben oder so...

  Alt 26. Feb 2010, 11:03
Hm also sozusagen eine Liste anlegen mit folgendem Aufbau:

Tabelle1
CodeMaster für Tabelle1
Tabelle2
CodeMaster für Tabelle2
Tabelle3
.
.
.

Oder ich schreib ne Funktion die ungefähr so lautet:

if Tabelle1 then s := CodeMaster für Tabelle 1
else if Tabelle 2 then s := CodeMaster für Tabelle 2
else....


Aber dann muss ja immer die Funktion abgeändert werden, wenn im Programm eine neue Tabelle hinzukommt oder gelöscht wird
Franz
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#4

Re: Variable dynamisch übergeben oder so...

  Alt 26. Feb 2010, 11:04
Oder eine entsprechende Funktion schreiben in der Art:
Delphi-Quellcode:
const
  MYFIRSTCONST = 1;
  MYSECONDCONST = 2;

function StrToConst(const ConstName: string): DWORD;
begin
  Result := 0;
  if AnsiLowerCase(ConstName) = 'myfirstconstthen
    Result := MYFIRSTCONST
  else if AnsiLowerCase(ConstName) = 'mysecondconstthen
    Result := MYSECONDCONST
  else
    raise Exception.CreateFmt('"%s" ist not a valid constant name.',[ConstName]);
end;
Aber schön ist was anderes

[edit] Roter Kasten, hallo *klopf* *klopf* [/edit]
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
Ducksoul

Registriert seit: 19. Apr 2006
Ort: Ilmenau
87 Beiträge
 
RAD-Studio 2009 Pro
 
#5

Re: Variable dynamisch übergeben oder so...

  Alt 26. Feb 2010, 11:16
Naja das ist ja schonmal eine Antwort, die ich bis auf das Edit sogar verstehe *g*

Ich denke mal, dass ich das Problem wohl so umsetzen werde. Wobei ich mir bei gefühlten 100 Tabellen ja wirklich nen Wolf schreib und schön aussehen tut's auch nicht

Gruß
Franz
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#6

Re: Variable dynamisch übergeben oder so...

  Alt 26. Feb 2010, 11:18
[OT] Das Edit bezog sich darauf, dass ich keinen roten Kasten gesehen habe und somit nicht wusste, dass Du bereits etwas gepostet hattest. [/OT]
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
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Variable dynamisch übergeben oder so...

  Alt 26. Feb 2010, 11:32
Sind die Tabellen fest? Wie sehen diese aus? Evtl. hilft dir eine Ressource weiter ähnlich wie hier.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Ducksoul

Registriert seit: 19. Apr 2006
Ort: Ilmenau
87 Beiträge
 
RAD-Studio 2009 Pro
 
#8

Re: Variable dynamisch übergeben oder so...

  Alt 26. Feb 2010, 14:01
Hm ja das könnte mir wirklich helfen, aber jetzt habe ich das andere schon implementiert. Wenns dann irgendwann an die Codeoptimierung geht, dann werde ich mir das nochmal anschauen

Danke euch für die Hilfe. Inzwischen läuft das Erstellen der kompletten Datenbankstruktur nach Vorbild des Codemasters ohne Probleme
Franz
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Variable dynamisch übergeben oder so...

  Alt 26. Feb 2010, 14:11
Ich mach es meistens etwa so, wenn ich etwas Derartiges benötige.
Delphi-Quellcode:
const MeineKonstanten = array[0..2] of record
    Name: String;
    Wert: Irgendwas;
  end = (
    (Name: 'MYFIRSTCONST '; Wert: ...),
    (Name: 'MYSECONDCONST '; Wert: ...),
    (Name: '...'; Wert: ...));

function StrToConst(const ConstName: string): DWORD;
var
  i: Integer;
begin
  for i := 0 to High(MeineKonstanten) do
    if AnsiSameText(ConstName, MeineKonstanten[i].Name) then
    begin
      Result := MeineKonstanten[i].Wert;
      exit;
    end;
  raise Exception.CreateFmt('"%s" ist not a valid constant name.', [ConstName]);
end;
So muß man dann nur noch das Array anpassen, wenn sich was ändert und die Funktions bleibt schön übersichtlich.

Bei "Wert", im Array, kannst du dann entweder deine "echte" Konstante angeben oder direkt deren Inhalt.
$2B or not $2B
  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 09:41 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