Entwickler-Ecke

Datenbanken - DatenBank-Memo und einzeilig


Jakane - Mi 18.05.11 15:18
Titel: DatenBank-Memo und einzeilig
Hallo liebe Delphi-Helfer :)

In meinem Programm lese ich eine DatenbankFelder aus und gebe sie über eine ListBox in eine .txt Datei.

Jetzt habe ich nur das Problem, dass eines dieser Felder ein MemoFeld ist, welches ich auch nicht ändern kann.
Dadurch rutscht aber auch in der .txt eine 2.Zeile mit rein und macht sowohl Filter als auch Sortierung kaputt :(

Da das Memo nur 80 Zeichen fassen kann und die Vorfelder "nur" auf knapp 150, kommt man nicht an die 255 Grenze der txt-Zeilen.

Wie bringe ich das DBMemo dazu statt
"Ich habe einen Fehler "
"gefunden."

das in mein .txt zu schreiben
"Ich habe einen Fehler gefunden."

Danke für Hilfen :)


Nersgatt - Mi 18.05.11 15:20

Ersetze in dem String das #13#10 durch nix (= '') bzw. durch einen Leerschritt.


Jakane - Mi 18.05.11 15:42

user profile iconNersgatt hat folgendes geschrieben Zum zitierten Posting springen:
Ersetze in dem String das #13#10 durch nix (= '') bzw. durch einen Leerschritt.


Problem... es gibt kein #13#10 in dem String soweit ich das sehe, wie löscht man was unsichtbares?


Nersgatt - Mi 18.05.11 15:55

user profile iconJakane hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconNersgatt hat folgendes geschrieben Zum zitierten Posting springen:
Ersetze in dem String das #13#10 durch nix (= '') bzw. durch einen Leerschritt.


Problem... es gibt kein #13#10 in dem String soweit ich das sehe, wie löscht man was unsichtbares?

Dann siehst Du nur den Wald vor lauter Bäumen nicht. Das #13#10 (oder manchmal auch nur #13) ist der Zeilenumbruch. Diese Zeichen sagen dem Memo also "hey, hier an dieser Stelle fang mal ne neue Zeile an!". Und genau das musst Du rauslöschen.


Jakane - Mi 18.05.11 16:00

Ich verwende selbst #13 um ein Zeilenumbruch zu provozieren.

Aber was ich nicht sehe kann ich nicht löschen. und ein #13 sieht man nicht als #13 sondern als zeilenumbruch, wie löscht mal sowas?


zuma - Mi 18.05.11 16:23

user profile iconJakane hat folgendes geschrieben Zum zitierten Posting springen:

Aber was ich nicht sehe kann ich nicht löschen.


wenn du mit dem Auge guckst, siehst du nicht alles, schau lieber mit dem Verstand ;)


Delphi-Quelltext
1:
lstr := StringReplace(DeinMemoText, '#13#10''', [rfReplaceAll]);                    


sollte dir helfen


Jakane - Mi 18.05.11 16:28

user profile iconzuma hat folgendes geschrieben Zum zitierten Posting springen:

wenn du mit dem Auge guckst, siehst du nicht alles, schau lieber mit dem Verstand ;)


Delphi-Quelltext
1:
lstr := StringReplace(Memo, '#13#10''', [rfReplaceAll]);                    


sollte dir helfen


Leider nicht, das Memo wird nach wir vor 2-Zeilig gezeigt.

sowohl Memo als auch lstr :(


zuma - Mi 18.05.11 16:34

was ist memo für ein typ? TMemo oder String?

zeig mal die codestelle, wo du die ersetzung machst ...


Jakane - Do 19.05.11 09:18


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
Var
  Sx : String
Begin
 .
 .
 .
Sx:= '|' + DBtxtNummer.Field.AsString + '|' + txtKundenNr.Text + '|' +
           DBtxtVersion.Field.AsString + '|' + DBtxtUsername.Field.AsString + '|' +
           DBtxtDatumZeit.Field.AsString + '|' + DBtxtPerMail.Field.AsString + '|' +
           DBtxtFehlertext.Field.AsString + '|' + DBtxtFormCaption.Field.AsString + '|' +
           DBtxtFormClassName.Field.AsString;

lbTransport.Items.Add(Sx);


DBtxtFehlertext.Field.AsString ist in der Datenbank als Memo/Blob markiert und das kann ich in der Datenbank auch nicht ändern

Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt


Nersgatt - Do 19.05.11 09:29

Und wo ist da die Ersetzung?


Jakane - Do 19.05.11 09:39


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
Var
  Sx, Memo : String;
Begin
 .
 .
 .
Memo := StringReplace(DBtxtFehlertext.Field.AsString, '#13#10''', [rfReplaceAll]);
Sx:= '|' + DBtxtNummer.Field.AsString + '|' + txtKundenNr.Text + '|' +
           DBtxtVersion.Field.AsString + '|' + DBtxtUsername.Field.AsString + '|' +
           DBtxtDatumZeit.Field.AsString + '|' + DBtxtPerMail.Field.AsString + '|' +
           Memo + '|' + DBtxtFormCaption.Field.AsString + '|' +
           DBtxtFormClassName.Field.AsString;

lbTransport.Items.Add(Sx);

Was nicht funktioniert, lass ich üblicherweise nicht drin.
So hatte ich sie verwendet.

Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt


Nersgatt - Do 19.05.11 09:43

Da stimmt ja die Abfolge nicht. Mach die Ersetzung auf Sx:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
Sx:= '|' + DBtxtNummer.Field.AsString + '|' + txtKundenNr.Text + '|' +
           DBtxtVersion.Field.AsString + '|' + DBtxtUsername.Field.AsString + '|' +
           DBtxtDatumZeit.Field.AsString + '|' + DBtxtPerMail.Field.AsString + '|' +
           Memo + '|' + DBtxtFormCaption.Field.AsString + '|' +
           DBtxtFormClassName.Field.AsString;

Sx := StringReplace(Sx, '#13#10''', [rfReplaceAll]);

lbTransport.Items.Add(Sx);


Oder nur auf das eine Feld direkt beim Zusammensetzen des Strings.


Jakane - Do 19.05.11 09:51

Funktioniert leider auch nicht

Selbst wenn ich nur '#' statt #13#10 mache, löscht er mir zwar alle # zeichen, aber der zeilenumbruch bleibt


Nersgatt - Do 19.05.11 10:17

:shock:

Jetzt sehe ich es. ZUMA!!!! :twisted:

Delphi-Quelltext
1:
Sx := StringReplace(Sx, #13#10'', [rfReplaceAll]);                    

So muss es sein (ohne die ' beim #13#10)


Jakane - Do 19.05.11 10:21

Moderiert von user profile iconNarses: Komplett-Zitat des letzten Beitrags entfernt.

:D :D :!:

funktioniert!
und eine neue funktion gelernt die ich auch woanders benutzen kann (happy)


zuma - Do 19.05.11 10:58

ups :oops:
schnell vor Feierabend noch antworten, etwas c&p, kontroll-lesen gestrichen und schon schreibt man so'n sch...


Jakane - Do 19.05.11 11:14

user profile iconzuma hat folgendes geschrieben Zum zitierten Posting springen:
ups :oops:
schnell vor Feierabend noch antworten, etwas c&p, kontroll-lesen gestrichen und schon schreibt man so'n sch...


Trotzdem Danke :)


DonManfred - Do 19.05.11 12:57

user profile iconzuma hat folgendes geschrieben Zum zitierten Posting springen:


Delphi-Quelltext
1:
lstr := StringReplace(DeinMemoText, '#13#10''', [rfReplaceAll]);                    

sollte dir helfen


Das sucht aber den STRING '#13#10' und nicht nach CRLF...


Delphi-Quelltext
1:
lstr := StringReplace(DeinMemoText, #13#10'', [rfReplaceAll]);                    


Dürfte besser sein.


Jakane - Do 19.05.11 13:21

Nersgatt war 2,5h schneller :D :wink:


DonManfred - Do 19.05.11 15:28

user profile iconJakane hat folgendes geschrieben Zum zitierten Posting springen:
Nersgatt war 2,5h schneller :D :wink:


Yo, sollte lieber erst alles lesen bevor ich antworte :D