Autor Beitrag
Studio54
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mo 30.03.09 10:09 
Hay :)
Ich hatte zuvor eine Excel Datei und hab dort, die einzellnen Zeilen und Zellen ausgelesen gehabt.
Da es meine Aufgabe ist dieses Programm jetzt auf mehreren Rechnern zum laufen zu kriegen, hab ich mir gedacht, dass ich einfach die Excel Datein in Textdateien um schreibe.
Gesagt getan

Ein Beispiel hierfür:
Zitat:
100#Eintritt#8,00
---#Getränke#
200#Bier 0,33 l#1,50
201#Bier 0,5 l#2,50
202#Bier 1,0 l#4,80
203#Softdrink 0,2 l#1,50
204#Softdrink 0,5 l#3,00
205#Cocktails#5,50
206#Caffee / Tee#2,00
207#Wasser 0,33 l#1,10
208#Sekt Glas 0,2 l#3,50
209#Sekt Flasche 0,7 l#15,00
210#Wein Flasche 0.7 l#20,00
211#Shooter / Kurze 2 cl#2,00
212#Longdrinks#5,00

Ich hab das Trennzeichen '#' benutzt.

ausblenden Delphi-Quelltext
1:
AssignFile(Excel, 'Produktlisten\'+ Absender +'.txt');					

Damit ögffne ich die Txt Datei.
Excel hab ich als TextFile deklariert.

Wie schaffe ich es, dass ich jetz jede einzellne Zelle abrufen kann(Eine Zelle der Textinhalt vor einer '#'.

Moderiert von user profile iconNarses: Zitat entfärbt
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Mo 30.03.09 10:18 
ich denke dieser artikel kann dir dabei helfen, natürlich braucht er noch einige anpassungen ;-)

*Klick mich, ich will es*

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
Studio54 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mo 30.03.09 10:28 
Hay Michael,

leider sind wir nur im Grundkurs Informatik und unser Horizont reicht leider nicht so weit.
Gibt es nicht eine Art Bauernlösung für uns?
Vor dem Parsen stehen wir grade vor einem anderen Problem.
Wir haben es mit
ausblenden Delphi-Quelltext
1:
Zelle:=Excel.Line.0					


(Excel ist wieder nur ein Bezeichner für eine TextFile)

Das hat leider nicht so hingehaun wie wir es uns gedacht haben

ausblenden Delphi-Quelltext
1:
Zelle :=ReadLN(Excel, Zeile until '#');					


Wie gesgat wir sind Delphi Bauern sozusagen.

MFG
Studio54
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Mo 30.03.09 10:32 
kannst du vl. ein bisschen quellcode herzeigen, weil ich hab keine ahnung wie du das realisierst. Mit einem TFile? Wie wollt ihr das ganze anzeigen lassen? in einem TStringGrid?

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
Studio54 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mi 01.04.09 08:01 
So bin wieder am Rechner.


Hay Michael und alle anderen :)

Meine 1 ste Version

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:
26:
27:
28:
      AssignFile(excel, 'Produktlisten\'+ Absender +'.txt');
      Zeile := 0;
      Spalte:=1;
      Reset(Excel);
      i:=1;
      h:=1;
      ReadLN(Excel, Datensatz);
      showmessage(Datensatz);
      while (Datensatz <> ' ') do
        begin
          while Datensatz[i] <> '~' do
            begin
              if Datensatz[i]='#' then
                begin
                  sgProdukte.Cells[Spalte-1,Zeile] := Copy(Datensatz, h, i-1);
                  inc(i);
                  h:=i+1;
                  inc(Spalte);
                end
                                  else
                  inc(i);
            end;
            ReadLN(Excel, Datensatz);
            inc(Zeile);
            Spalte:=1;
            sgProdukte.RowCount := sgProdukte.RowCount+1;
        end;
    end;


Jedoch kriege ich nur eine EAccessViolation -.-




Version 2 mit TStringlist, dank den Hinweis von Michael


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
var
  Listen: TStringList;
  Zeile: string;
begin
  Listen := TStringList.Create;
  try
    Listen.LoadFromFile('datei.txt');
    Zeile := Listen[15]; // hier muss ich mir was ausdenken, wie ich auf die einzellnen gewünschten zeilen zugreifen kann
  finally
    Listen.Free;
  end;
end;


Jeoch krieg ich wieder nur eine EAccessviolation
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Mi 01.04.09 09:47 
hmmm, ja, ne is klar.

mit dem befehl: Listen.Lines[15] greifst du auf, achtung, die 16te Zeile zu. Warum das so ist? Weil der Index einer Liste mit 0 beginnt, das heißt, für die erste zeile musst du 0 einsetzen, für die zweite 1, und so weiter.

So wenn du den Text nun Zeilenweise ausgeben magst, dann brauchst du eine Schleife. Ich persönlich mag For-Schleifen, deswegen setzen wir das jetzt einfach doch mal um:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
var
  Listen: TStringList;
  Zeile: string;
  iLauf: Integer;
begin
  Listen := TStringList.Create;
  try
    Listen.LoadFromFile('datei.txt');
    for iLauf := 0 to Listen.Lines.Count - 1 do
      Zeile := Listen[iLauf];
  finally
    Listen.Free;
  end;
end;


Die geänderten Zeilen sind orange markiert. ;)

So, da du das sicher schön formatiert ausgeben willst, in Spaltenform, brauchst du den Befehl Stringreplace. Versuch dich damit mal, wenns nicht geht, dann melde dich wieder. ;)

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.