Announcement

Collapse
No announcement yet.

Fehler beim Senden von 'CTRL+Z' zu comport

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Fehler beim Senden von 'CTRL+Z' zu comport

    Hi,

    I benutze die ComPort Komponente (www.winsoft.sk) um mit einem GSM Modem zu kommunizieren. Um eine SMS zu senden, muss ich 'CTRL+Z" zum Modem schicken.

    Leider ist 'CTRL+Z' ein Windows keyboard shortcut fuer 'undo', was dann mein Programm auch macht. Wenn ich die Commands in ein Edit-Feld eingebe, passiert das selbe. Aber wenn ich die Commands (CTRL+Z oder '', scheinen beide das selbe zu sein) von einer Testsoftware kopiere, dann funktionierts und sendet die SMS.

    Was kann ich tun, um das Problem zu loesen oder zu umgehen?

    Ich bin dankbar fuer jede Hilfe.

    Gruss,
    Ronald

  • #2
    Hallo Ronald,

    indem Du an Stelle der Tastenkombination 'Strg+Z' tatsächlich STRG+Z eingibst (eventuell z.B. in geschweiften Klammern, damit Du den Anfang und das Ende des Befehls leichter findest) und zur Laufzeit eine entsprechende Übersetzung vornimmst. STRG+Z sollte Hex. 1A, Dec. 26 entsprechen. Das Kästchen bedeutet nur, daß es kein Zeichen in dem Zeichensatz gibt, mit dem Du das darstellen kannst.

    Grüße Joche

    Comment


    • #3
      Hi,

      Ich habe das alles ausprobiert. Ich habe es rein kopiert. Ich habe es als Hex gesendet und ich habe es als Zeichen gesendet. Aber es funktioniert nicht. Der Borland Builder 6 compiliert das kopierte nicht und wenn ich es als Hex sende, macht er 'Undo'. Was kann ich tun?

      Ronal

      Comment


      • #4
        äh, Du darfst das natürlich kein char oder AnsiString benutzen, da diese nach dem 'Sonderzeichen' abgeschnitten werden. Wenn Du einen 'Strg+Z' == x1A an ein Editfeld sendest führt er UnDo aus! Du mußt das entweder zuerst in einen Speicherbereich (z.B. Array aus unsigned int oder Byte, je nachdem was die Komponente für einen Typ erwartet) schreiben und dann Byte für Byte an den Comport senden, oder es direkt an den Com-Port senden.

        Wie oft und an welcher Stelle im Befehl müssen denn solche Sonderzeichen gesendet werden?

        Wenn das z.B. nur einmal am Anfang oder am Ende nötig ist, sendest Du zuerst nur das STRG+Z und dann den String hinterher...

        Grüße Joche

        Comment


        • #5
          Hallo nochmal,

          char sollte doch funktionieren...

          Probier mal folgendes: Neue Anwendung, 1 TButton, 1 TEdit und ein TMemo darauf plazieren und in der OnClick des Buttons folgendes:
          <PRE>
          char* Command = new char[255]; // char anlegen (255 Zeichen lang)
          for (int i = 0; i < 255; i++) // und initialisieren
          Command[i] = 0;
          AnsiString CommandString = Edit1->Text;
          AnsiString ReplaceString = "{STRG+Z}"; // zu ersetzender Ausdruck
          char ReplaceChar = 26; // hiermit ersetzen
          if (CommandString.AnsiPos(ReplaceString))
          {
          int pos = CommandString.AnsiPos(ReplaceString);
          CommandString = CommandString.Delete(pos, ReplaceString.Length());
          CommandString = CommandString.Insert(AnsiString(" "), pos);
          Command = strcpy(Command, CommandString.c_str());
          Command[pos - 1] = ReplaceChar;
          }
          int c = 0;
          while (Command[c]) // Ausgabe in Memo
          {
          Memo1->Lines->Add(IntToStr((unsigned int) Command[c]));
          c++;
          }
          </PRE>
          Im Edit gibst Du dann mal 'blabla {STRG+Z} blabla' ein und klickst auf den Button.

          Das Prinzip sollte damit klar werden

          Grüße Joche

          Comment

          Working...
          X