Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Unsichtbares Leerzeichen (https://www.delphipraxis.net/139560-unsichtbares-leerzeichen.html)

jellol 31. Aug 2009 18:54


Unsichtbares Leerzeichen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Guten Abend!

Habe mich hier heute angemeldet, nachdem ich ungefähr 32.00 mal auf euren Forenseiten gelandet bin. Jetzt habe ich allerdings ein kleines Problem, für dass ich noch keine Lösung gefunden habe :o . Ist aber wirklich nur ganz klein.
Und zwar wollte ich ein kleines bisschen Zeit sparen, indem ich eine Eingabe, die ich in mehreren Programmen brauchte, in ein eigenes Programm schreibe, welches diese direkt in die Zwischenablage kopiert. (Ich weiß eigentlich spar ich mir dadurch nur Wort markieren, strg+c, aber wo ein Wille ist, ist ein Hindernis :-D .) Also eben das Programm geschrieben. Hat alles geklappt. Dann hab ich noch eben hinzugefügt, dass das "Haupt-Edit" geleert wird, wenn man strg+return drückt. Und da kam das kleine Problem. Und zwar fügte sich immer ein "unsichtbares Leerzeichen" als erstes Zeichen in das Editfeld ein, wenn man zuvor strg+Return benutzt hat.
Das Programm mit Quellcode häng ich an.

Sichtbar wird das "unsichtbare Leerzeichen" in OpenOffice Calculator. In anderen Programmen ist es vorhanden, aber halt nicht sichtbar. Hab aber nicht soo viele Programme ausprobiert.

Man sieht meinen Versuch (trim), hat nicht geklappt.
Auch dem Edit eine leere String zuzuweisen macht keinen Sinn.

Zum Testen: Programm starten, strg+return, neue eingabe, anderes Programm öffnen, strg+v :wink:

Achso und für alle nichtregistrierten Leser:


Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Form1.Height := 53;
  Edit1.Left := 0;
  Edit1.Top := 0;
  Edit1.Width := Form1.Width;
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
  if Edit1.Text <> '' then
    clipboard.AsText := trim(Edit1.Text);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Form1.Height := 53;
  Edit1.Left := 0;
  Edit1.Top := 0;
  Edit1.Width := Form1.Width;
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key = 17 then strgpress := true;
  if (key = 8) and (strgpress) then edit1.text := '';
end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key = 17 then strgpress := false;
end;

Reinhard Kern 31. Aug 2009 19:18

Re: Unsichtbares Leerzeichen
 
Zitat:

Zitat von jellol
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key = 17 then strgpress := true;
  if (key = 8) and (strgpress) then edit1.text := '';
end;

Hallo,

zunächst sollte man die definierten Konstanten benutzen (VK_BACK) und die gedrückte Strg-Taste aus Shift auslesen. Ausserdem wird die Eingabe Ctrl-BS ausgewertet, das gedrückte Zeichen wird aber zur Verarbeitung an Formular oder Edit weitergegeben. Wenn man eine Taste selbst verarbeitet, sollte man Key = 0 setzen, damit nicht aufgrund des Tastendrucks noch irgendwas anderes passiert. Also etwa so:

Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (key = VK_BACK) and (ssCtrl in Shift) then
    begin
    edit1.text := '';
    Key := 0;
    end;
end;
[/quote]

himitsu 31. Aug 2009 19:22

Re: Unsichtbares Leerzeichen
 
und sicherheitshalber eventuell noch ein
Delphi-Quellcode:
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (key = VK_BACK) and (ssCtrl in Shift) then
    Key := 0;
end;
hinterher, nicht daß noch etwas passiert, wenn man die Taste wieder losläßt.

jellol 31. Aug 2009 20:14

Re: Unsichtbares Leerzeichen
 
Okay hab ich probiert. Brachte zwar beim Ausführen keine Veränderung, aber immerhin, der Code ist schöner :-D.
Habe mal ein bisschen ausprobiert. Es liegt an OpenOffice. Dieses nimmt wohl nicht so gerne fremde, unsichtbare Leerzeichen an. Kommen sie allerdings aus einem anderen OpenOffice-Dokument, stellt das Kopieren kein Problem dar. Auch wenn es sich dabei um andere Dokumenttypen OpenOffices handelt klappt es problemlos.
Seltsam ist es aber dennoch, vor allem, dass es sich mit Delphi nicht entfernen lässt.
Wenn noch jemand eine Idee hat, mich würd's interessieren, aber ich kann auch so beruhigt schlafen :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:11 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-2025 by Thomas Breitkreuz