//Nachricht mit Keycode 0 wird von Anwendung empfangen://
procedure TForm1.WMTimeChange(
var Message: TMessage);
var
Result, Gesamthex, Hexawert, Hinten, Vorne, Ausgabe :
String;
begin
if Chr(
Message.WParam) = #0
then
begin
MemoEingabe.Text := '
';
MemoAusgabe.Text := '
';
Formfuellen(Result,Gesamthex,Hexawert,Vorne,Hinten,Ausgabe);
end
else
inherited;
end;
//##############################################################################
//Stand: 17.10.2003
//Autor:
//Beschr:Wandelt den Hexadezimalen Wert in den entsprechenden dezimalen Ascii-Code und
// diesen in das entsprechende Ascii-Zeichen
//Version: 1.1
//Global: -
//Input: Gesamthex,Hexawert
//Output:
//Result:
//Exception:
function TForm1.HexToAsciiToZeichen(Gesamthex,Hexawert :
String) :
String;
var
Asciicode, Gesamtwort :
String;
AsciiInt,PosLeer, PosD, PosA : Integer;
Buchstabe :
String;
begin
Gesamthex := MemoEingabe.Text;
Gesamtwort := '
';
repeat
PosLeer := Pos('
', Gesamthex);
if (PosLeer > 0)
then
begin
Delete(Gesamthex,PosLeer,1);
end;
PosD := Pos(#$D, Gesamthex);
if (PosD > 0)
then
begin
Delete(Gesamthex,PosD,1);
end;
PosA := Pos(#$A, Gesamthex);
if (PosA > 0)
then
begin
Delete(Gesamthex,PosA,1);
end;
until (PosLeer = 0);
repeat
//Aus dem gesamten String(Gesamthex) sollen in 2er-Zeichen(Hexawert) Teilstrings extrahiert werden:
Hexawert := Copy(Gesamthex, 1, 2);
if copy(Hexawert,2,2) <> '
'
then
begin
//Umwandeln Hexadez zu Asciicode(Dez):
Asciicode := IntToStr(StrToInt('
$' + Hexawert));
AsciiInt := StrToInt(Asciicode);
if (AsciiInt >= 32)
then
begin
//Umwandeln Asciicode zu Asciizeichen:
Buchstabe := Chr(AsciiInt);
end
else
begin
Buchstabe := '
';
end;
Gesamtwort := Gesamtwort + Buchstabe;
Delete(Gesamthex, 1, 2);
Result := Gesamtwort;
end
until (Gesamthex = '
');
end;
//Form mit Inhalt://
procedure TForm1.Formfuellen(Result,Gesamthex,Hexawert,Vorne,Hinten :
String;
var Ausgabe :
String);
var
Stringlaenge,PosSeparator : Integer;
begin
MemoEingabe.PasteFromClipboard;
Result := HexToAsciiToZeichen(Gesamthex,Hexawert);
Stringlaenge := Length(Result);
repeat
PosSeparator := Pos('
/', Result);
if (PosSeparator > 0)
then
begin
Vorne := copy(Result,1,PosSeparator-1);
Hinten := copy(Result,PosSeparator+1,Stringlaenge);
Delete(Result, PosSeparator,1);
Result := Hinten;
Ausgabe := Vorne + #13#10 + Hinten;
Result := Ausgabe;
end;
until (PosSeparator = 0);
MemoAusgabe.Text := Result;
end;
//Gesamtablauf://
procedure TForm1.FormActivate(Sender: TObject);
var
Result, Gesamthex, Hexawert, Hinten, Vorne, Ausgabe :
String;
begin
MemoEingabe.Text := '
';
MemoAusgabe.Text := '
';
Formfuellen(Result,Gesamthex,Hexawert,Vorne,Hinten,Ausgabe);
// ShowMessage('Hallo');
end;
//Mehrfachstart verhindern://
var
mHandle: THandle;
ustrProgName :
String;
Initialization
begin
//ShowMessage(Application.ExeName);
ustrProgName := '
Terminal.exe' + #0;
//ustrProgName := Application.ExeName + #0;
mHandle := CreateMutex(
nil,True,@ustrProgName[1]);
if GetLastError = ERROR_ALREADY_EXISTS
then
begin
//Nachricht versenden Keycode 0:
SendMessage(HWND_BROADCAST, WM_TIMECHANGE, 0, 0);
//Anwendung läuft bereits:
//showMessage('Anwendung läuft bereits!');
//Beendet Anwendung:
Halt;
end;
end;
Finalization
begin
if mHandle <> 0
then CloseHandle(mHandle);
end;
end.