![]() |
Datenbank: MariaDB • Version: ? • Zugriff über: MyConnect
Memo2.Lines speichern
Hallo,
möchte aus einem Memo, bestimmte "Zeilen" in eine Datenbank schreiben. Wenn jetzt in einer Zeile nur "Leerzeichen" sind, wird die Procedure nicht weiter ausgeführt.
Delphi-Quellcode:
procedure TForm1.SQLSAVETimer(Sender: TObject);
begin if (CheckBox2.Checked = true) and (Memo2.Text <> '') then begin Einsaetze.Insert; Einsaetze.Edit; Einsaetze.FieldByName(ListBox1.Items[0]).Text := Memo2.Lines[0]; Einsaetze.FieldByName(ListBox1.Items[1]).text := Memo2.Lines[1]; Einsaetze.FieldByName(ListBox1.Items[2]).Text := Memo2.Lines[2]; Einsaetze.FieldByName(ListBox1.Items[3]).text := Memo2.Lines[3]; Einsaetze.FieldByName(ListBox1.Items[4]).Text := Memo2.Lines[4]; Einsaetze.FieldByName(ListBox1.Items[5]).text := Memo2.Lines[5]; Einsaetze.Post; Einsaetze.Refresh; Memo2.Clear; |
AW: Memo2.Lines speichern
Hallo,
Ich musste deine Frage nur 10x lesen oder so aber ich glaube ich weiß was du für eine Antwort brauchst: Benutze eine for-Schleife! Es ist nicht garantiert dass ein Memo eine gewisse Anzahl von Zeilen hat. Stattdessen kannst du nur alle verfügbaren Zeilen in die Datenbank schreiben:
Delphi-Quellcode:
uses
Math; procedure TForm1.SQLSAVETimer(Sender: TObject); var i: Integer; begin if (CheckBox2.Checked = true) and (Memo2.Text <> '') then begin Einsaetze.Append; for i:= 0 to Min(Memo2.Lines.Count, 6) - 1 do begin Einsaetze.FieldByName(ListBox1.Items[i]).Text := Memo2.Lines[i]; end; Einsaetze.Post; Einsaetze.Refresh; Memo2.Clear; end; end; |
AW: Memo2.Lines speichern
.....
|
AW: Memo2.Lines speichern
Zitat:
|
AW: Memo2.Lines speichern
hallo neutral-general,
jetzt wird aber nur 'Memo2.Lines[0].text' abgespeichert.
Delphi-Quellcode:
procedure TForm1.SQLSAVETimer(Sender: TObject);
var i : integer; begin if (CheckBox2.Checked = true) and (Memo2.Text <> '') then begin Einsaetze.Append; for i:= 0 to Min(Memo2.Lines.Count, 6) - 1 do begin Einsaetze.FieldByName(ListBox1.Items[i]).Text := Memo2.Lines[i]; Einsaetze.Post; Einsaetze.Refresh; Memo2.Clear; end; end; end; |
AW: Memo2.Lines speichern
Weil das end von der Schleife viel zu weit unten ist. In der Schleife selbst ist nur das "Einsaetze.FieldByName(.."
|
AW: Memo2.Lines speichern
.....
|
AW: Memo2.Lines speichern
Zitat:
Delphi-Quellcode:
am Ende der Schleife ausführst. Also du löschst den gesammten Inhalt von Memo2, nachdem die Schleife EINMAL durchgelaufen ist.
Memo2.Clear
2) Bitte benutzt doch ordentliche Code-Einrückung!
Delphi-Quellcode:
So sollte es wohl gedacht sein:
procedure TForm1.SQLSAVETimer(Sender: TObject);
var i: Integer; begin if CheckBox2.Checked and (Memo2.Text <> '') then begin Einsaetze.Append; for i:= 0 to Min(Memo2.Lines.Count, 6) - 1 do begin Einsaetze.FieldByName(ListBox1.Items[i]).Text := Memo2.Lines[i]; Einsaetze.Post; Einsaetze.Refresh; Memo2.Clear; // <-- Der Inhalt von Memo2 wird bei diesem Aufruf GELEERT end; end; end;
Delphi-Quellcode:
Wie schon gesagt: EINRÜCKUNG! Dann wird auch der Unsinn deutlicher, den man verzapft. ;)
procedure TForm1.SQLSAVETimer(Sender: TObject);
var i: Integer; begin if CheckBox2.Checked and (Memo2.Text <> '') then begin Einsaetze.Append; for i:= 0 to Min(Memo2.Lines.Count, 6) - 1 do begin Einsaetze.FieldByName(ListBox1.Items[i]).Text := Memo2.Lines[i]; end; Einsaetze.Post; Einsaetze.Refresh; Memo2.Clear; end; end; |
AW: Memo2.Lines speichern
Zitat:
Die Lösung von Neutral General, die Memo über eine Schleife abzuarbeiten, ist am rationellsten. |
AW: Memo2.Lines speichern
.....
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz