Autor Beitrag
OneOfTen
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 21.02.05 10:55 
Guten Morgen :)

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: 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



BeitragVerfasst: 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.. :wink:
MitschL
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 211

Win 98 SE, Win 2000
D5 Pers, D6 Pers und D7 Pro
BeitragVerfasst: 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:
ausblenden 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



BeitragVerfasst: Mo 21.02.05 15:06 
Hast du verstanden, was ich meine, MitschL?

MitschL hat folgendes geschrieben:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
type TData = record;
  key: String;
  value: String;
end;

TDatas: Array of TData;


Das ist unübersichtlich im Gegensatz zu zB sowas:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
Type TData2 = Record
  Vorname : String;
  Pfad: String;
  Datum: TDate;
  Alter: Integer;
  wasweißich: Boolean;
  nocheine: Byte;
End;
maximus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 896

Win XP, Suse 8.1
Delphi 4/7/8 alles prof
BeitragVerfasst: 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: Suche in der Delphi-PRAXiS DPCOLLECTION und is eigentlich genau das was du willst, nur viel cooler 8)

_________________
mfg.
mâximôv
OneOfTen
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 21.02.05 15:34 
danke werde ich mir mal angucken..
MitschL
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 211

Win 98 SE, Win 2000
D5 Pers, D6 Pers und D7 Pro
BeitragVerfasst: 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



BeitragVerfasst: 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 :wink: Und ich wollte eine Antwort darauf haben, ob man das feststellen kann 8)
Gothicware
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
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
BeitragVerfasst: 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???

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 211

Win 98 SE, Win 2000
D5 Pers, D6 Pers und D7 Pro
BeitragVerfasst: 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)