Entwickler-Ecke

Dateizugriff - Datei öffnen, Strings bzw. Zeilen überschreiben, speichern


Blah_Blahson - So 18.03.07 15:41
Titel: Datei öffnen, Strings bzw. Zeilen überschreiben, speichern
So, ist mir jetzt egal ob ich hier mit Use Search First zugelabert werde, aber ich hab's eilig und beherrsche Delphi einfach zu schlecht um da jetzt rumzuknobeln.
Also:

Eine Textdatei, in die ich schon was reingeschrieben habe, soll vom Programm geöffnet werden, dort soll aus zwei bestimmen, variabel festzulegenden Zeilen der jeweilige Wert (Integer) gelesen werden. Mit diesen Werten (sagen wir x und y) soll irgendeine Rechnung vollzogen werden. Meinetwegen sowas wie x:=x+z und y:=y+z. Der neuen Werte sollen die alten Werte in der Textdatei überschreiben.

Zusätzlich soll man über irgendeinen Button diese Textdatei öffnen können.

Ich danke im Voraus.


jakobwenzel - So 18.03.07 15:44

Am einfachsten ist es, wenn du die Datei in eine TStringList lädst. Dann kannst du nämlich mit StringList[Zeilennummer] auf die Zeilen zugreifen.


Blah_Blahson - So 18.03.07 15:50

Schon mal ein guter Tipp. Nur ist mein Problem, dass ich diese Öffnen- Schreiben- und Speicheralgorithmen nicht mehr kenne. (Die stehen nämlich lustigerweise nur in einem Quelltext auf meinem Account im Schulnetzwerk ^^)


jakobwenzel - So 18.03.07 15:55

Kennst du die Hilfe von Delphi oder die Forumssuche? :roll:


Blah_Blahson - So 18.03.07 16:01

Siehe oben.
Die Delphi Hilfe ist mir nicht aufschlussreich genug, deshalb meinte ich auch ich hätte weder Lust noch Zeit, da jetzt rumzuprobieren.


jakobwenzel - So 18.03.07 16:02

Kannst du denn Englisch?
Aus Datei Laden = LoadFromFile
In Datei speichern = SaveToFile


Blah_Blahson - So 18.03.07 16:23

Boah, noch nebulöser geht's echt nicht. Was mir die Hilfe dazu verzapft, ist für mich soviel wie Babygebrabbel. Ich bin einfach ne Niete in Delphi und kann deswegen auch nichts mit der Scheisshilfe anfangen, weil die einfach mal voraussetzt, dass ich das Programmieren richtig verstanden habe, hab ich aber nicht, weil ich im Infounterricht grade mal nen Crashkurs darin bekomme. Ist denn das so schwer zu verstehen, dass ich mit nem Stück Quelltext mehr anfangen kann als mit jeglicher Delphi-Hilfe und sonstigen Tipps zusammen? Bis morgen muss ich mein dummes Projekt fertig haben, ich komme aber nicht weiter, weil ich diese Programmierumgebung nicht kapiere. Und ich hab auch keine Zeit, mir an einem Tag alles nötige rauszufummeln, weil's auch noch andere Sachen gibt, die ich heute machen muss. Also bitte...


jakobwenzel - So 18.03.07 16:40

Du kannst hier nicht erwarten, ohne Eigenleistung ein fertiges Programm zu kriegen. Spätestens in ner Prüfung kommste damit nicht mehr durch.

Das was du von der StringList dafür benutzen musst ist folgendes:

Delphi-Quelltext
1:
2:
3:
4:
5:
TSTringList.Create;
DeineStringList.LoadFromFile
DeineStringList[Zeilennummer]
DeineStringList.SaveToFile
DeineStringList.Free


Zum Textdatei öffnen:
Wenn du damit im Standardprogramm öffnen meinst: ShellExecute

Moderiert von user profile iconKlabautermann: Delphi-Tags hinzugefügt.


Blackheart666 - So 18.03.07 16:43

Am besten Du stellst mal deinen bisherigen Code hier rein, und stellst dann konkrete Fragen wo Du nicht weiterkommst.
Dann ist es für alle bestimmt etwas einfacher.:wink:


Blah_Blahson - So 18.03.07 17:23

So, einfach den Kommentar ab 117 lesen.

@jakobwenzel: Hab eh nicht vor, mich nach der Schulzeit noch mit Programmieren zu beschäftigen, von daher ist mir das recht wuppe.



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:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
unit UTicket;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    ComboBoxPrice: TComboBox;
    ComboBoxPay: TComboBox;
    ButtonConfPrice: TButton;
    ButtonConfPay: TButton;
    LabelToPay: TLabel;
    LabelPayed: TLabel;
    LabelToPayDisp: TLabel;
    LabelPayedDisp: TLabel;
    GroupBoxStatus: TGroupBox;
    EditStatus: TEdit;
    GroupBoxAction: TGroupBox;
    ButtonAbort: TButton;
    procedure ButtonConfPriceClick(Sender: TObject);
    procedure ButtonConfPayClick(Sender: TObject);
    procedure ButtonAbortClick(Sender: TObject);


  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  topay: integer;          {Die Variable legt fest, wie viel noch zu zahlen ist}        
  justpayed: integer;      {Die Variable legt fest, welche Münze [b]gerade eben[/b] eingeworfen wurde}
  everpayed: integer;      {Die Variable legt fest, wie viel insgesamt schon für die Karte gezahlt wurde}
  StringListVerkauf: TStringList;


implementation

{$R *.dfm}

//-----------------------------------------------------------------------
//---------------Ticket wählen-------------------------------------------
//-----------------------------------------------------------------------


procedure TForm1.ButtonConfPriceClick(Sender: TObject);
begin

   case ComboBoxPrice.ItemIndex of
   -1: Beep;
   0: topay:=2;
   1: topay:=4;
   2: topay:=5;
   end;

   everpayed:=0;
   justpayed:=0;
   LabelToPayDisp.Caption:=inttostr(topay);
   LabelPayedDisp.Caption:=inttostr(everpayed);
   EditStatus.Text:='Ticket gewählt - Erwarte Zahlung';

   ComboBoxPay.Enabled:=true;
   ComboBoxPrice.Enabled:=false;
   ButtonConfPay.Enabled:=true;
   ButtonConfPrice.Enabled:=false;
   ButtonAbort.Visible:=true;

end;

//-----------------------------------------------------------------------
//---------------Ticket zahlen-------------------------------------------
//-----------------------------------------------------------------------


procedure TForm1.ButtonConfPayClick(Sender: TObject);
begin

   case ComboBoxPay.ItemIndex of
   -1: Beep;
   0: justpayed:=1;
   1: justpayed:=2;
   2: justpayed:=5;
   end;

 if topay>0 then
 if topay-justpayed>=0 then
  begin
   ButtonConfPrice.Enabled:=false;
   everpayed:=everpayed+justpayed;
   topay:=topay-justpayed;
   LabelPayedDisp.Caption:=inttostr(everpayed);
   LabelToPayDisp.Caption:=inttostr(topay);

      if topay=0 then
       begin

       ButtonAbort.Visible:=false;
       ButtonConfPrice.Enabled:=true;
       ButtonConfPay.Enabled:=false;
       ComboBoxPrice.Enabled:=true;
       ComboBoxPay.Enabled:=false;

{Dieses Ausschalten hab ich nur der Idiotensicherheit halber gemacht} 

       EditStatus.Text:='Ticket bezahlt - Erwarte Ticketwahl';

{Die Fahrkarte ist jetzt also bezahlt, jetzt muss nur noch in der Textdatei Verkauf.txt deren Preis geschrieben werden
damit unser imaginärer Bahnangestellter das bisher eingenommene Geld zählen kann}



       TStringList.Create;
       StringListVerkauf.LoadFromFile(ExtractFilePath(Application.ExeName) + 'Verkauf.txt');
       StringListVerkauf[1];
       StringListVerkauf.SaveToFile(ExtractFilePath(Application.ExeName) + 'Verkauf.txt');
       StringListVerkauf.Free;

{so, hier habe ich schon mal das reingeknallt, was mir der Herr von oben aufgeschrieben hat... da muss jetzt nur noch der
Zugriff auf die Zeile rein (hab hier mal ne 1 für ne Zeile genommen damit ich das compilieren konnte), das Rauslesen des
Integerwertes, die Berechnung (s.o.) - ich gehe, abweichend von meiner Problembeschreibung, mal nur von einer Zeile aus
die ersetzt werden muss. Insofern kann man bei der 1 für die Zeilenangabe bleiben. Der Wert, der zum Integerwert aus der
Datei addiert werden soll, ist in der Variable everpayed. Also würde die Rechnung quasi so aussehen:
WertAusDatei := WertAusdatei + everpayed;}




       end
       else
       EditStatus.Text:='Eingabe registriert - Erwarte Zahlung';
  end

 else
  begin
   Beep;
  end;

end;

//-----------------------------------------------------------------------
//---------------Abbruch-------------------------------------------------
//-----------------------------------------------------------------------

procedure TForm1.ButtonAbortClick(Sender: TObject);
begin
   topay:=0;
   justpayed:=0;
   everpayed:=0;

   ButtonAbort.Visible:=false;
   ButtonConfPrice.Enabled:=true;
   ButtonConfPay.Enabled:=false;
   ComboBoxPrice.Enabled:=true;
   ComboBoxPay.Enabled:=false;

   EditStatus.Text:='Zahlung abgebrochen - Erwarte Ticketwahl';
   LabelPayedDisp.Caption:=inttostr(everpayed);
   LabelToPayDisp.Caption:=inttostr(topay);


end;



end.