Autor Beitrag
Smartie
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 205



BeitragVerfasst: Mi 20.04.05 07:20 
Servus!

Nachdem ich es gestern doch noch geschafft habe, vom COM richtig zu elsen, und aus ner II was rauszulesen, gehts nun weiter.


Bisher sieht meine ini "ungefähr" so aus':

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
[F1]
BN=0
Name=RFS
Byte=6
Format=ASCII
Bereich=6
[F2]
BN=6
Name=WGR
Byte=1
Format=Hex
Bereich=1..7

...


Da ich ca. bis F30 muß, und diese INI später verständlich sein soll, wäre mir eine Darstellung wie folgt "lieber".

ausblenden Quelltext
1:
2:
3:
4:
Funktion/BN/Name/Byte/Format/Bereich
F1/0/RFS/6/ASCII/6
F2/6/WGR/1/Hex/1..7
...


Hat jemand ne Idee, wie ich das anstelle?

Danke und lieben Gruß

Smartie

Moderiert von user profile iconTino: Titel geändert.
DarkHunter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 477

Win XP
D3 Prof, D2005 PE
BeitragVerfasst: Mi 20.04.05 07:27 
Da wäre es fast einfacher das ganze in eine Datenbank zu setzen
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Mi 20.04.05 07:35 
Morgen!

user profile iconSmartie hat folgendes geschrieben:
Hat jemand ne Idee, wie ich das anstelle?

Ja, das ganze selbst programmieren. Also mit eine tStringList die Daten laden und dann mit Pos() oder mit Explode die einzelnen Zeilen zerlegen.

Gruß
Tino
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mi 20.04.05 07:49 
Ich würde auch Tinos Empfehlung folgen.
Aber wozu muss die INI-Datei lesbar sein? Da soll doch wohl niemand manuell rumfummeln, oder?
INI benutzt man üblicherweise zum Speichern und Laden von Einstellungen. Das wird vom Programm gesteuert. Theoretisch macht es also keinen Sinn, dass die Datei lesbar sein muss.
Smartie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 205



BeitragVerfasst: Mi 20.04.05 07:52 
user profile iconDarkHunter hat folgendes geschrieben:
Da wäre es fast einfacher das ganze in eine Datenbank zu setzen


An sich ne gute Idee, nur leider nicht diskutable. Das sind meine Vorgaben welche ich gesetzt bekommen habe, und damit muß ich arbeiten. ichkann das ini zwar gestallten wie ichwill, aber an sich ist die "Zeilenlösung" übersichtlicher.

Das mit dem Expode hört sich intressant an, werd ich mir mal genauer ansehn, danke.

Lieben Gruß

Smartie
Smartie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 205



BeitragVerfasst: Mi 20.04.05 08:00 
user profile iconjasocul hat folgendes geschrieben:
Ich würde auch Tinos Empfehlung folgen.
Aber wozu muss die INI-Datei lesbar sein? Da soll doch wohl niemand manuell rumfummeln, oder?


Doch, da soll evtl. jemand späte mal rumfummeln. Es kann sein, das dies in ein paar Jahren notwendig sein wird, kann man nie wissen. Wenn z.B. plötzlich jemand meint, wir senden das Format für den Status nicht mehr in ASCII sodnern in HEX, so muß das in der INI geändert werden. Denn in der INI steht lediglich, wie Daten die über das COM geschickt werden zu interpretieren sind.

Lieben Gruß

Smartie
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mi 20.04.05 08:24 
user profile iconSmartie hat folgendes geschrieben:
Doch, da soll evtl. jemand späte mal rumfummeln. Es kann sein, das dies in ein paar Jahren notwendig sein wird, kann man nie wissen. Wenn z.B. plötzlich jemand meint, wir senden das Format für den Status nicht mehr in ASCII sodnern in HEX, so muß das in der INI geändert werden. Denn in der INI steht lediglich, wie Daten die über das COM geschickt werden zu interpretieren sind.

Wenn dann noch jemand weiß, dass das in der INI-Datei eingestellt werden kann. :lol:
Is schon OK. Wollte auch nur meine Bedenken von mir geben. Einstellungen sollten eigentlich immer über das Programm gesteuert werden. Bei der manuellen Änderungen von Einstellungsdateien kann einfach zu viel Mist verzapft werden. Auch unbeabsichtigt.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 20.04.05 08:36 
Als Anmerkung bzgl.
Zitat:
Es kann sein, das dies in ein paar Jahren notwendig sein wird, kann man nie wissen.

Falls du mal vorhast, auf .NET zu wechseln: Nach meinen bisherigen Recherchen gibt´s dort keine Klasse für INI-Dateien mehr. Es sei denn, überraschend wird eine in .NET 2.0 oder höher eingebaut. Darum solltest du dich vllt. auch mit Alternativen vertraut machen. Und da werfe ich mal als eine mögliche Alternative (von vielen) XML in den Raum. ;)
Smartie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 205



BeitragVerfasst: Mi 20.04.05 08:57 
user profile iconMathiasSimmack hat folgendes geschrieben:
Als Anmerkung bzgl.
Zitat:
Es kann sein, das dies in ein paar Jahren notwendig sein wird, kann man nie wissen.

Falls du mal vorhast, auf .NET zu wechseln: Nach meinen bisherigen Recherchen gibt´s dort keine Klasse für INI-Dateien mehr. Es sei denn, überraschend wird eine in .NET 2.0 oder höher eingebaut. Darum solltest du dich vllt. auch mit Alternativen vertraut machen. Und da werfe ich mal als eine mögliche Alternative (von vielen) XML in den Raum. ;)


user profile iconjasocul hat folgendes geschrieben:

Bei der manuellen Änderungen von Einstellungsdateien kann einfach zu viel Mist verzapft werden. Auch unbeabsichtigt.


Absolut richtig! Ihr habt beide Recht. Nur, ich bin es nicht der das entscheidet.
Ich mach ja auch nicht das ganze Projekt, sodnern es hieß von meinem Chef vor nicht ganz zwei Wochen "Gehen Sie in die Buchhandlung, holen Sie sich ein Buch über Delphi, arbeiten Sie sich ein, und dann machen Sie mal diese Anbindung über Delphi."

Und in diesem Projekt soll nunmal später, wenn ich längst nichts merh damit zu tun habe, der Anwender die Möglichkeit haben zu sagen "Ok, wir ändern da jetzt mal was".


aber, wenn wir schon dabei sind *g* Wie lese ich denn nun eine bestimmte Zeile aus der INI aus, da ich nun keine Sektionen mehr habe, sondern nur noch die Zeilen?


Lieben Gruß

Smartie
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mi 20.04.05 09:11 
Tja, immer diese bösen Chefs :wink:
Mitdenken und Hinweise auf eventuelle Probleme geben, mögen die aber manchmal. Na gut, ich kenne deinen Chef nicht.

Wie hast du es denn gespeichert. Ich meine das Verfahren. Inhaltlich ist das ja klar.
Smartie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 205



BeitragVerfasst: Mi 20.04.05 09:19 
user profile iconjasocul hat folgendes geschrieben:
Tja, immer diese bösen Chefs :wink:
Mitdenken und Hinweise auf eventuelle Probleme geben, mögen die aber manchmal. Na gut, ich kenne deinen Chef nicht.

Wie hast du es denn gespeichert. Ich meine das Verfahren. Inhaltlich ist das ja klar.


Och, mein chef ist schwer in Ordnung! Er will halt auch das ichwas bei lerne, da ich bisher auser HTML kaum wirklich was programiert habe, finde ich es an sich ganz gut.
Und ich mache hier wie gesagt nur einen Teil des ganzen.

Gespeichert, du meinst die INI? Ich bin mir nicht ganz sicher, ob ich deine Frage verstehe. Naja, als stink normale INI-Datei mit dem Aufbau, wie weiter oben beschrieben. explode funktioniert übrigens Vorzüglich :tongue:

Wer auch immer das geschrieben hat, ein Dankendes :flehan:

Fuß zum Gruß

Smartie
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Mi 20.04.05 09:35 
Hallo!

Die INI-Klasse (TIni) musst du vergessen. Ich habe oben bereits geschrieben das Du die Verarbeitung am besten mit TStringList durchführst. Einfach mal in der Hilfe und hier im Forum nach Suche in: Delphi-Forum, Delphi-Library TSTRINGLIST suchen. Dort findest Du einige Beispiel wie du mit Hilfe der TStringList eine Datei lädst und diese verarbeiten kannst.

Gruß
Tino
Smartie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 205



BeitragVerfasst: Mi 20.04.05 10:17 
Hallo,

ok, Delphi-Hilfe hat ein paar Infos gegeben, war aber nicht das Ware. Hier im Forum hab ich was recht nettes gefunden. Ich sehs schon, ich hab wohl irgendwo Müll gebaut, weil sobald ich die ini öffne, bringt er mir eine Exception.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
procedure TForm1.Button1Click(Sender: TObject);
var datei, z, rein, BN, Name, Byte, Format, Bereich : string;
    ini : TIniFile;
    exparr: TStringDynArray;
    zeilenarr : TStringDynArray;

begin
     // testen wir mal mit dem TString den Zugriff auf unsere ini
    if opendialog1.execute then
    datei := opendialog1.FileName

    else datei := '';

    begin
    MySList := TStringList.Create;
    MySList.LoadFromFile(datei);

    //Schau mer mal wies mit den einzelen Zeilen aussieht
    for X := 0 to MySList.Count-1 do
    zeilenarr[x] := MySList.Strings[x];
    

    MySList.Free;
    end;
end;


Ich hab schon gesucht, aber ich konnt keinen Fehler finden.
Sieht jemand was ich falsch gemacht hab?

Lieben Gruß

Smartie

Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 20.04.05 10:27 
Mit Farben und vernünftiger Einrückung sieht man besser:
user profile iconSmartie hat folgendes geschrieben:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
procedure TForm1.Button1Click(Sender: TObject);
var datei, z, rein, BN, Name, Byte, Format, Bereich : string;
    ini : TIniFile;
    exparr: TStringDynArray;
    zeilenarr : TStringDynArray;

begin
     // testen wir mal mit dem TString den Zugriff auf unsere ini
    if opendialog1.execute then datei := opendialog1.FileName
      else datei := '';

    begin
      MySList := TStringList.Create;
      MySList.LoadFromFile(datei);

      //Schau mer mal wies mit den einzelen Zeilen aussieht
      for X := 0 to MySList.Count-1 do
      zeilenarr[x] := MySList.Strings[x];
    

      MySList.Free;
    end;
end;

Mal abgesehen von zwei kleinen "Dummheiten" ;) vermute ich, dass du deinem dynamischen Stringarray erst mal eine Größe zuweisen musst bevor du einzelne Felder belegen kannst.
Smartie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 205



BeitragVerfasst: Mi 20.04.05 12:04 
user profile iconMathiasSimmack hat folgendes geschrieben:
Mal abgesehen von zwei kleinen "Dummheiten" ;) vermute ich, dass du deinem dynamischen Stringarray erst mal eine Größe zuweisen musst bevor du einzelne Felder belegen kannst.


Darf ich erfahren welche du meinst?
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Mi 20.04.05 12:35 
Er meint die Variablendeklaration. 8) Da steht z.B. ini : TInifile. Delphi wird dir aber schon gesagt haben, daß das nirgendwo benutzt wird. Ich versuche solche Dinge zu beachten und von Anfang an zu beseitigen, zumindest wenn es mich stört. 8) Spätestens wenn ich was poste. Ansonsten sieht das mit Sicherheit irgendwer und ärgert dich damit. :mrgreen:

_________________
Gruß
Hansa
Smartie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 205



BeitragVerfasst: Mi 20.04.05 12:36 
Also, es läuft, und der Code sieht grad so aus:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
procedure TForm1.Button1Click(Sender: TObject);
var datei, F, BN, Name, Byte, Format, Bereich : String;
    exparr: TStringDynArray;
    zeilenarr : TZStringArr;


begin
     // testen wir mal mit dem TString den Zugriff auf die ini
    if opendialog1.execute then
    datei := opendialog1.FileName

    else datei := '';

    begin
    MySList := TStringList.Create;
    MySList.LoadFromFile(datei);

    //Schau mer mal wies mit den einzelen Zeilen aussieht
    for X := 0 to MySList.Count-1 do
    zeilenarr[x] := MySList.Strings[x];

    MySList.Free;
    end;


    Folgendes nur für Testzwecke, später sicher NICHT so gelöst!
    exparr := explode('||', zeilenarr[5]);

    F := exparr[0];
    BN := exparr[1];
    Name := exparr[2];
    Byte := exparr[3];
    Format := exparr[4];
    Bereich := exparr[5];


    label1.Caption := 'Funktion:' + F;
    label2.Caption := 'Byte_Nr :' + BN;
    label3.Caption := 'Name    :' + Name;
    label4.Caption := 'Bytes   :' + Byte;
    label5.Caption := 'Format  :' + Format;
    label6.Caption := 'Bereich :' + Bereich;

end;

end.


Wenn noch jemand was findet, was Bugs verursachen könnte, oder was unnötig drin ist, bin offen für derartige Vorschläge *g*

lieben Gruß und Danke,

Smartie

Moderiert von user profile iconGausi: Code- durch Delphi-Tags ersetzt.
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Mi 20.04.05 13:01 
user profile iconSmartie hat folgendes geschrieben:
Wenn noch jemand was findet, was Bugs verursachen könnte, oder was unnötig drin ist...


Dir ist klar, daß jede Unklarheit für einen Fehler gut ist ? Insofern gelten allerdings auch die Allerwelts-Binsenweisheiten : formatiere den Quelltext (insbesondere Einrückungen und end in extra Zeile). Vor allem sind aussagekräftige Namen wichtig. In 2 Jahren wirst selbst du nicht mehr wissen was sich hinter Label1 usw. verbirgt.

_________________
Gruß
Hansa
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 20.04.05 13:27 
user profile iconhansa hat folgendes geschrieben:
Er meint die Variablendeklaration. 8)

Eigentlich hatte ich eher diese Konstruktion gemeint:

user profile iconSmartie hat folgendes geschrieben:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
    if opendialog1.execute then datei := opendialog1.FileName
      else datei := '';

    begin
      { ... }
    end;

Was ist gegen
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
if opendialog1.Execute then
begin
  // der Stringlist-Kram
  { ... }
end;

einzuwenden? Wenn keine Datei ausgewählt wird, dann muss man doch den Quark mit der Stringliste nicht durchgehen. ;)
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Mi 20.04.05 13:37 
Hallo!

Warum kopierst du den Inhalt von der TStringList in die Variable zeilenarr? Arbeite doch direkt mit der TStringList. Dann brauchst du nicht rum kopieren (Zeile 19-23 in deinem Quellecode oben) und keine Arrays vergrößern.

Gruß
Tino