| Autor |
Beitrag |
OneOfTen
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 21.02.05 10:55
Guten Morgen
Delphi-Quelltext 1:
| Procedure Prozedur(dat: TDaten); |
Ist es möglich, alle Variablen von TDaten aufzurufen ohne die Definition des Records TDaten zu kennen?
Nützlich wäre das, wenn ich Programmeinstellungen programmintern in einem Record habe und die alle in einer Ini speichern möchte. Dann könnte ich eine allgemeine Unit schreiben, die die ganzen Prozeduren vom Lesen bis zum Schreiben von Inis tut, ohne jedes Mal neu erstellt werden zu müssen.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Mo 21.02.05 13:27
Das ist leider nicht möglich, allerdings kannst Du über ein Array von TypeInfo-Strukturen soetwas ähnliches realisieren. Für Records selber gibt es aber KEINE TypeInfo.
Ein etwas einfacherer Weg wäre allerdings Objekte zu defineiren und iesen die INI zu übergeben, so dass sich diese selbstständig abspeichern und laden können.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
OneOfTen
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 21.02.05 13:35
schade eigentlich...
An den Weg mit dem Array hab ich auch gedacht, allerdings ist ein Variablenname wohl kaum so aussagekräftig um sämtlichen Einstellungen gerecht zu werden.
Deinen zweiten Vorschlag hab ich noch nicht gemacht, zumind. sagt er mir nichts, gib mal bitte ein kurzes Beispiel, vielleicht fällt dann der Groschen.. 
|
|
MitschL
      
Beiträge: 211
Win 98 SE, Win 2000
D5 Pers, D6 Pers und D7 Pro
|
Verfasst: Mo 21.02.05 14:11
Ähm,
also ich steh da wohl etwas auf dem Schlauch. Also geh ich mal von 'ner INI aus. Hier stehen doch eh nur Texte, weswegen sich die TDaten auch aus Stringlisten zusammensetzen lassen würden, oder?
Des Weiteren hast Du Key=Value-Pärchen, was doch auch eine ziemliche Einschränkung darstellt. Das heißt, daß du irgendwo die Abbildung deiner Werte in die INI haben müßtest. Dazu kommt zwar noch die Sektion, was für mich aber alles ziemlich restriktiv ist und von daher schon die Vielfältigkeit einschränkt. Am besten gibst du mir mal zwei Beispiele, die mir das deutlich machen, weil ich sonst noch etwas anbiete, daß so aussieht:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| type TData = record; key: String; value: String; end;
TDatas: Array of TData; |
gegrüßt!
_________________ "Bloßes Ignorieren ist noch keine Toleranz." (Theodor Fontane)
|
|
OneOfTen
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 21.02.05 15:06
|
|
maximus
      
Beiträge: 896
Win XP, Suse 8.1
Delphi 4/7/8 alles prof
|
Verfasst: Mo 21.02.05 15:20
hallo,
tatsächlich wäre ein objektorientierter ansatz der beste, auch in hinblick auf wartung und zukünftige änderungen. Dafür könntest du zB. die dpCollectio benutzen...
www.delphidev.de/phpBB2/viewtopic.php?t=29
...in der dp Sind auch jede thread zu dem thema: DPCOLLECTION und is eigentlich genau das was du willst, nur viel cooler 
_________________ mfg.
mâximôv
|
|
OneOfTen
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 21.02.05 15:34
danke werde ich mir mal angucken..
|
|
MitschL
      
Beiträge: 211
Win 98 SE, Win 2000
D5 Pers, D6 Pers und D7 Pro
|
Verfasst: Mo 21.02.05 15:56
Wie käme deine Abbildung in das INI-Format zustande, wenn du nicht weißt, welche Informationen du da hast? Wie speicherst du einen Namen, wenn du nicht weißt, was ein Name ist, bzw, wie schaffst du sonst eine Zuordnung beim wieder laden?
gegrüßt!
_________________ "Bloßes Ignorieren ist noch keine Toleranz." (Theodor Fontane)
|
|
OneOfTen
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 21.02.05 16:05
| MitschL hat folgendes geschrieben: | Wie käme deine Abbildung in das INI-Format zustande, wenn du nicht weißt, welche Informationen du da hast? Wie speicherst du einen Namen, wenn du nicht weißt, was ein Name ist, bzw, wie schaffst du sonst eine Zuordnung beim wieder laden?
|
Fragen über Fragen  Und ich wollte eine Antwort darauf haben, ob man das feststellen kann 
|
|
Gothicware
      
Beiträge: 77
Win 98, Win 2000, Win XP, BeOs-R5, Zeta 1.0(war nicht gut, also verkauft), KnoppiX, VM-Ware
D4 Client/Server, Turbo Basic, QBasic, Atari-Basic
|
Verfasst: Mo 21.02.05 16:35
Da die Daten in der letzt endlichen Ini-Datei, als String gespeicher werden,
wäre es da nicht Sinnvoll, die Daten immer als String zuübergeben, und dann je nach Inhalt des Strings, die Daten zubehandeln???
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| function Datenbehandeln(Daten: String):Boolean; var s:String; b:Byte; i:Integer; bool:Boolean; begin s := ''; b := 0; i := -1; bool := false; try i:= StrToInt(Daten) except machwasMITi(i) end; if (i < 256) and (i > -1) then begin b := i; end; if uppercase(Daten) = 'TRUE' then bool := true; end; |
Das ist jetzt nur mal so ein schneller Ansatz, Natürlich muss man dann noch eine Variable festlegen, welche beinhalted, was für ein Typ gefunden wurde. Das Result, muss dann durch die Except behandelt. Also gibt an, ob die Unbekannte Variable erfolgreich beahndelt wurde oder nicht.
|
|
MitschL
      
Beiträge: 211
Win 98 SE, Win 2000
D5 Pers, D6 Pers und D7 Pro
|
Verfasst: Di 22.02.05 12:51
Ähm,
ich versuche mit meinen Fragen nur einzukreisen, in wie weit du dir das vorstellst. Und wo es bei mir hapert, hoffte ich verständlich gemacht zu haben, oder?
gegrüßt!
_________________ "Bloßes Ignorieren ist noch keine Toleranz." (Theodor Fontane)
|
|
|