Seite 1 von 1

Microsoft Word - Copy and Paste

Verfasst: 29.09.2015 18:58
von viochette
Hallo,

obwohl ich schon einige Zeit dabei bin, merke ich gerade, dass ich doch noch ein Anfänger bin - daher die Frage hier.
Mein Problem: Ein Editorgadget, eine SQLite Datenbank und ein Word-Dokument.

gebe ich den Text manuell in das Editorfeld ein und speichere den Text - alles super.

Code: Alles auswählen

kompTeil3="irgendwas"
kompTeil4=GetGadgetText(#cboTBneu_Edit)

 OpenDatabase(DataBase1, "db.kplus", "", "")  
 DatabaseUpdate(DataBase1,"INSERT INTO textbausteine (id,pw,baustein) VALUES (NULL,'"+kompTeil3+"','"+kompTeil4+"')") 
 CloseDatabase(DataBase1)

Wenn ich den Text aus einer Worddatei mittels Copy and Paste in das Editorfeld zunächst einfüge dann speichere, geschieht
das, was mich gerade Nerven kostet.

Es scheint wohl Steuerzeichen in Word zu geben, die mir den Datensatz verhauen (ID ist nicht mehr als ID ansprechbar bei Abfrage).
Wie kann ich (generell) aus in Word formatiertem Text einen reinen Text machen ??

Grüße
viochette

Re: Microsoft Word - Copy and Paste

Verfasst: 29.09.2015 19:07
von RSBasic
Es liegt natürlich daran, dass du einen formatierten Text kopierst. Da EditorGadget kein Reintext-Editor ist, sondern ein RTF-Editor, werden die Formate beim Einfügen übernommen.
Es gibt mehrere Möglichkeiten:
1. Du nimmst ein StringGadget und machst es mehrzeilig (#ES_MULTILINE). Dann hast du immer den reinen Text und musst nichts rausfiltern.
2. Oder du greifst auf die Windows-Zwischenlage zu und ermittelst den Text im richtigen Format. Beispielcodes siehe http://www.rsbasic.de/winapi-library/ siehe Kategorie "Zwischenablage"
3. Du kannst z.B. auch mit SetGadgetText(#Gadget, GetGadgetText(#Gadget)) deinen formatierten Text in einen Reintext umwandeln.

Re: Microsoft Word - Copy and Paste

Verfasst: 29.09.2015 19:25
von Kiffi
zusätzlich zum RSBasics Anmerkungen:
viochette hat geschrieben:

Code: Alles auswählen

[...]
 DatabaseUpdate(DataBase1,"INSERT INTO textbausteine (id,pw,baustein) VALUES (NULL,'"+kompTeil3+"','"+kompTeil4+"')")
[...]
das ist übel, wenn in pw oder baustein selber ein ' (einfaches Hochkomma (Chr(39))) enthalten ist. Das solltest Du vor dem Einfügen in die Datenbank 'entschärfen' indem Du es verdoppelst:

Code: Alles auswählen

kompTeil3 = ReplaceString(kompTeil3, "'", "''")
kompTeil4 = ReplaceString(kompTeil4, "'", "''")
Ab PB 5.4 ist es möglich, Parameter zu binden (SetDatabase*()), um SQL-Injections zu verhindern.

Grüße ... Peter

Re: Microsoft Word - Copy and Paste

Verfasst: 29.09.2015 20:40
von viochette
Danke Euch!

@RSBasic
Werde ich ausprobieren, - das mit dem SetGadgetText(#Gadget, GetGadgetText(#Gadget)) hatte ich schon - , hat nicht funktioniert, gleicher Effekt.

Mit der Zwischenablage, da bin ich gespannt und mehrzeiliges StringGadget, das hatte ich absolut nicht auf dem Schirm.



@Kiffi
Richtig, wertvoller Hinweis - das muss ich auch noch kugelsicher machen.

Danke
Guido

Re: Microsoft Word - Copy and Paste

Verfasst: 29.09.2015 20:44
von GPI
Kiffi hat geschrieben:Ab PB 5.4 ist es möglich, Parameter zu binden (SetDatabase*()), um SQL-Injections zu verhindern.
sehr zu empfehlen, sonst kommt irgendwer mal auf die idee ein ';DROP TABLE ins Textfeld einzugeben.

Generell sollte man immer alle Eingaben überprüfen, bevor man sie mit Datenbankbefehlen irgendwo hochlädt. Den Benutzer darf man niemals trauen, die kommen immer auf die lustigsten Ideen. Gerade bei Webanwendungen wird es sonst sehr schnell sehr kritisch.

Re: Microsoft Word - Copy and Paste

Verfasst: 08.10.2015 22:59
von viochette
Hallo,
kleine Wasserstandsmeldung:
Habe das dann letztendlich mit dem mehrzeiligen StringGadget gelöst.
Danke für Eure Hilfe, hat mich auch allgemein weitergebracht.

@RSBasic
Deine Seite ist wahrhaftig eine Fundgrube und absolut wertvoll als Ressource, toll !!

Gruß Guido