AGB  ·  Datenschutz  ·  Impressum  







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

einen Datensatzmitgliedsnamen dynamisch zuweisen

Ein Thema von neumimnemecky · begonnen am 6. Jul 2022 · letzter Beitrag vom 7. Jul 2022
Antwort Antwort
neumimnemecky

Registriert seit: 21. Dez 2018
45 Beiträge
 
#1

AW: einen Datensatzmitgliedsnamen dynamisch zuweisen

  Alt 6. Jul 2022, 17:04
Danke, aber
"IndexText" Problem in der D7 [Error]: Undeclared identifier: 'IndexText'.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: einen Datensatzmitgliedsnamen dynamisch zuweisen

  Alt 6. Jul 2022, 17:17
Problem in der D7
Wer macht denn sowas?

https://www.embarcadero.com/de/products/delphi/starter

Diese Funktionen gibt es bestimmt mindestens seit 2009 2006, also kurz nach D7, aber vielleicht auch schon im Delphi 7, wenn man die passende Unit einbindet?
Aktuell ist es in der System.StrUtils bzw. StrUtils ... aber mit der Zeit wurden auch Units umbenannt, bzw. Funktion in andere Units verschoben.

Delphi-Referenz durchsuchenStrUtils.IndexText (case-insensitive, also quasi mit einem AnsiUpperCase drumrum)
Delphi-Referenz durchsuchenStrUtils.IndexStr (case-sensitive)
Die gucken einfach nur in einem Array, ob/wo das da drin steht.

CASE kann ja leider im Delphi nur Ordinal und keine Strings, so wie nahezu jede andere Sprache
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 6. Jul 2022 um 17:19 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.559 Beiträge
 
Delphi 7 Professional
 
#3

AW: einen Datensatzmitgliedsnamen dynamisch zuweisen

  Alt 6. Jul 2022, 17:36
Delphi 7 kennt aber AnsiIndexText (in der Unit StrUtils zu finden).
  Mit Zitat antworten Zitat
neumimnemecky

Registriert seit: 21. Dez 2018
45 Beiträge
 
#4

AW: einen Datensatzmitgliedsnamen dynamisch zuweisen

  Alt 6. Jul 2022, 18:09
Viele Danke, daher habe ich den Code ein wenig geändert, um die Leistung zu steigern:

Code:
if group = 'A' then
 case AnsiIndexText(pars[0]+'_A', ['path_A', 'first_frame_A', 'end_frame_A' , 'first_filename_A' , 'check_if_files_exist_A']) oF
   0: ini.basic.A.path := pars[1];
   1: ini.basic.A.first := pars[1];
   2: ini.basic.A.last := pars[1];
   3: ini.basic.A.start_name := pars[1];
   4: ini.basic.A.check_files_exist := true;
 end
else
if group = 'B' then
 case AnsiIndexText(pars[0]+'_B', ['path_B' , 'first_frame_B' , 'end_frame_B' , 'first_filename_B', 'check_if_files_exist_B']) oF
   0: ini.basic.B.path := pars[1];
   1: ini.basic.B.first := pars[1];
   2: ini.basic.B.last := pars[1];
   3: ini.basic.B.start_name := pars[1];
   4: ini.basic.B.check_files_exist := true;
 end;
Es ist eine schöne Lösung.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: einen Datensatzmitgliedsnamen dynamisch zuweisen

  Alt 6. Jul 2022, 18:29
(pars[0]+'_B', ['path_B' , 'first_frame_B' , ...

(pars[0], ['path' , 'first_frame' , ...


Schneller ist es nur bedingt ... eher fast gleich schnell oder vielleicht eine Millisekunde langsamer (ein Funktionsaufruf, aber gleich viele String-Vergleiche),
aber es macht den Code kürzer und ohne die viele IF....THEN dazwischen auch etwas übersichlicher.

Hier die 123: als Konstante oder mit {Name}123: , erspart sich, da der Kommentar/Name bereits als .path := dran steht.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 6. Jul 2022 um 18:36 Uhr)
  Mit Zitat antworten Zitat
neumimnemecky

Registriert seit: 21. Dez 2018
45 Beiträge
 
#6

AW: einen Datensatzmitgliedsnamen dynamisch zuweisen

  Alt 6. Jul 2022, 18:42
(pars[0]+'_B', ['path_B' , 'first_frame_B' , ...

(pars[0], ['path' , 'first_frame' , ...


Schneller ist es nur bedingt ... eher fast gleich schnell oder vielleicht eine Millisekunde langsamer (ein Funktionsaufruf, aber gleich viele String-Vergleiche),
aber es macht den Code kürzer und ohne die viele IF....THEN dazwischen auch etwas übersichlicher.

Hier die 123: als Konstante oder mit {Name}123: , erspart sich, da der Kommentar/Name bereits als .path := dran steht.

Den letzten Satz verstehe ich nicht. Aber eine Millisekunde langsamer wäre viel. Hatten Sie nicht eine Mikrosekunde im Sinn?
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.559 Beiträge
 
Delphi 7 Professional
 
#7

AW: einen Datensatzmitgliedsnamen dynamisch zuweisen

  Alt 6. Jul 2022, 18:47
Ginge es eventuell auch so?
Delphi-Quellcode:
var
  ini : TBasicSettings;
begin
  case group of
    'A' : ini := ini.basic.A;
    'B' : ini := ini.basic.B;
  end;
  case AnsiIndexText(pars[0], ['path', 'first_frame', 'end_frame', 'first_filename', 'check_if_files_exist']) of
  // Wenn pars[0] immer in Kleinbuchstaben vorliegt, ginge auch
  // case AnsiIndexStr(pars[0], ['path', 'first_frame', 'end_frame', 'first_filename', 'check_if_files_exist']) of
  // das spart dann auch noch die Verpflichtung,
  // beim Vergleich nicht zwischen Groß- und Kleinschreibung zu unterscheiden.
    0: ini.path := pars[1];
    1: ini.first := pars[1];
    2: ini.last := pars[1];
    3: ini.start_name := pars[1];
    4: ini.check_files_exist := true;
  end;
end;
  Mit Zitat antworten Zitat
neumimnemecky

Registriert seit: 21. Dez 2018
45 Beiträge
 
#8

AW: einen Datensatzmitgliedsnamen dynamisch zuweisen

  Alt 6. Jul 2022, 19:03
Nein, die ini ist ein Wrapper - sie enthält viele Einstellungen zu Suchfarben, Text, Bildern usw. Das würde sie verlieren.
  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 05:20 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