![]() |
Re: Erkennen von Lines
und wie kann ich nun die erste zeile ignorieren und dann jeweils die zweite in integer konvertieren
Zeile1 ignorieren zeile 2 beschreibung zeile 3 preis // integer zeile 4 beschreibung zeile 5 preis// integer zeile 6 ........ |
Re: Erkennen von Lines
na mit trystrtoint....
Delphi-Quellcode:
Noch fragen?
for i:= 0 to sl.lines.count -1 do
if trystrtoint(sl.lines[i]) then sum:=sum + strtoint(sl.lines[i]); Und jetzt zurück zu den revolutionären tagesgeschäften... |
Re: Erkennen von Lines
Hi!
Schieb doch einfach ne temporäre String-Variable dazwischen:
Delphi-Quellcode:
Deklarationen:
AssignFile (Datei, DateiName);
Reset (Datei); ReadLn (Datei, Temp); // Zeile 1 ignorieren for i := 1 To Max do begin ReadLn (Datei, zeile1); // Bezeichnung ReadLn (Datei, zeile2); // +1 entfernt, da Betrag direkt in der nächsten Zeile kommt Val(Zeile2, int_Betrag, ErrCode); end; var ErrCode, int_Betrag: Integer; Temp: String; Arbeitest Du auch mit ungeraden Beträgen (mit Cent-Angaben) soltest Du int_Betrag als Real definieren. Hoffe, dir geholfen zu haben. Gruß, Andy |
Re: Erkennen von Lines
Code:
ich habe das jetzt erstmal so übernommen aber das mit der Konstanten geht irgendwie überhaupt nicht ??
[b]const Max = ChecklisteEin.Lines.Count;[/b]
begin if OpenDialog1.Execute then DateiName := OpenDialog1.FileName ; ChecklisteEin.Lines.LoadFromFile(OpenDialog1.FileName); AssignFile (Datei, DateiName); Reset (Datei); AssignFile (Datei, DateiName); Reset (Datei); ReadLn (Datei, Temp); // Zeile 1 ignorieren for i := 1 To Max DO begin ReadLn (Datei, zeile1); // Bezeichnung ReadLn (Datei, zeile2); // +1 entfernt, da Betrag direkt in der nächsten Zeile kommt Val(Zeile2, int_Betrag, ErrCode); end; Panel1.Caption := (); und wie kann ich nun alles zusammenrechnen lassen??? tut mir ja leid das ich euch so nerve [edit=Sharky]PRE-Tags eingefügt. Mfg, Sharky[/edit] |
Re: Erkennen von Lines
Hi,
Zitat:
Grüße vom marabu |
Re: Erkennen von Lines
mach aus dem const einfach ein var, homerunjack, und weise es zur laufzeit zu ( max:=memo1.lines.count -1). Konstanten funktionieren anders ;)
|
Re: Erkennen von Lines
@marabu: stimmt ich dachte die ist standardmäßig da und lässt sich nicht entfernen
@DGL-Luke: ja das ist mir auch gerade eingefallen so wie kann ich nun aus jeder zweiten zeile die werte zusammenrechnen??? procedure TForm1.ffnen1Click(Sender: TObject); var DateiName, zeile1, zeile2: String; Datei: TextFile; i, ErrCode, int_Betrag, Max, vermoegen: Integer; Temp: String; begin if OpenDialog1.Execute then DateiName := OpenDialog1.FileName ; ChecklisteEin.Lines.LoadFromFile(OpenDialog1.FileN ame); Max := ChecklisteEin.Lines.Count; AssignFile (Datei, DateiName); Reset (Datei); AssignFile (Datei, DateiName); Reset (Datei); for i := 1 To Max DO begin ReadLn (Datei, zeile1); // Bezeichnung ReadLn (Datei, zeile2); // +1 entfernt, da Betrag direkt in der nächsten Zeile kommt Val(Zeile2, int_Betrag, ErrCode); vermoegen := zeile2 + jede weitere 2. zeile ??? Panel1.Caption:= FloatToStr (vermoegen); end; |
Re: Erkennen von Lines
Hi,
die automatisch von der Delphi-IDE generierten Namen sind nur Platzhalter - du solltest die abändern, damit sich nicht sowas wie OpenDialog1 oder Edit1234 in deinem Programm breit macht. Schau mal, ob du das zum Laufen bringst:
Delphi-Quellcode:
Grüße vom marabu
procedure TMainForm.FileOpenClick(Sender: TObject);
var i, iError, iBetrag, iSaldo: integer; s: TStrings; begin if not OpenDialog.Execute then Exit; s := ChecklisteEin.Lines; s.LoadFromFile(OpenDialog.FileName); iError := 0; iSaldo := 0; for i := 0 To s.Count - 1 do begin if not Odd(i) then Continue; if not TryStrToInt(s[i], iBetrag) then Inc(iError) else iSaldo := iSaldo + iBetrag; end; SaldoPanel.Caption := IntToStr(iSaldo); end; |
Re: Erkennen von Lines
Ja das mit dem Laden klappt jetzt(danke, marabu und co.)
doch du hast ja geschrieben iSaldo := 0; wenn ich nun etwas geladen habe und eine neue Beschreibung mit preis hinzufüge fängt das programm wieder bei null an und rechnet dann normal weiter, sozusagen das laden geht doch den ausgangswert von der textdatei kann nicht weiterverwendet werden
Delphi-Quellcode:
[edit=Sharky]Delphi-Tags gesetzt. Bitte zukünftig selber machen Mfg, Sharky[/edit]
procedure TForm1.Button1Click(Sender: TObject);
begin // das passiert wenn einnahmen angeklickt wird begin if RadioEin.Checked then Neu:= StrToFloat (Edit2.Text); if RadioEin.Checked then ChecklisteEin.Lines.Add (Edit1.Text) ; if RadioEin.Checked then Edit3.text := FloatToStr(Neu); if RadioEin.checked then ChecklisteEin.Lines.Add(Edit3.Text ) ; if RadioEin.Checked then Gewinnzwei:= (Gewinn + Neu + Gewinn) ; if RadioEin.Checked then Panel1.Caption:= Floattostr (Gewinnzwei); end; // das passiert wenn ausgaben angeklickt wird begin if RadioAus.Checked then Neu:= StrToFloat (Edit2.Text); if RadioAus.Checked then ChecklisteEin.Lines.Add (Edit1.Text) ; if RadioAus.Checked then Edit3.text := FloatToStr(Neu * -1); if RadioAus.checked then ChecklisteEin.Lines.Add(Edit3.Text ) ; [b]if RadioAus.Checked then Gewinnzwei:= (Gewinnzwei - Neu + Gewinn) ; if RadioAus.Checked then Panel1.Caption:= Floattostr (Gewinnzwei); end;[/b] if (not RadioAus.checked) and (not RadioEin.checked) then ShowMessage ('Ein- oder Ausgabe anklicken'); end; procedure TForm1.Beenden1Click(Sender: TObject); begin close; end; procedure TForm1.ffnen1Click(Sender:TObject); var i, iError, iBetrag, Gewinn: integer; s: TStrings; begin if OpenDialog1.Execute then begin s := ChecklisteEin.Lines; s.LoadFromFile(OpenDialog1.FileName); iError := 0; Gewinn := 0; for i := 0 To s.Count - 1 do begin if not Odd(i) then Continue; if not TryStrToInt(s[i], iBetrag) then Inc(iError) else Gewinn := Gewinn + iBetrag; end; Panel1.Caption := IntToStr(Gewinn); end; |
Re: Erkennen von Lines
Muss denn das unbedingt eine Textdatei sein? Es wäre schöner und einfacher zu handeln, wenn du dir einen eigenen Datentyp deklarierst und den dann in eine typisierte Datei schreibst. Dir also quasi dein eigenes Dateiformat baust. Und ausgeben ließe sich das dann vielleicht in einer ListView im vsReport-Modus. Also so ungefährt so:
Name | Preis ----------+------ Gehalt | 500 Fernseher | -1500 Der Typ könnte dann z.B. so aussehen:
Delphi-Quellcode:
//edit
type TEintrag = record
Name: string; Preis: integer; end; Hrrmpf, hat meine ganze schöne Formatierung übern Jordan geschickt |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz