| Autor |
Beitrag |
geilo
Hält's aus hier
Beiträge: 6
|
Verfasst: Fr 25.06.04 23:57
Hallo, bräuchte da eure hilfe:
Zwar hab ich mit einem Quelltext, den man häufig im Forum findet, eine art Net Send Client gemacht.
Hier ist der Quelltext:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91:
| function NetSend(dest, Source, Msg: string): Longint; overload; type TNetMessageBufferSendFunction = function(servername, msgname, fromname: PWideChar; buf: PWideChar; buflen: Cardinal): Longint; stdcall; var NetMessageBufferSend: TNetMessageBufferSendFunction; SourceWideChar: PWideChar; DestWideChar: PWideChar; MessagetextWideChar: PWideChar; Handle: THandle; begin Handle := LoadLibrary('NETAPI32.DLL'); if Handle = 0 then begin Result := GetLastError; Exit; end; @NetMessageBufferSend := GetProcAddress(Handle, 'NetMessageBufferSend'); if @NetMessageBufferSend = nil then begin Result := GetLastError; Exit; end;
MessagetextWideChar := nil; SourceWideChar := nil; DestWideChar := nil;
try GetMem(MessagetextWideChar, Length(Msg) * SizeOf(WideChar) + 1); GetMem(DestWideChar, 20 * SizeOf(WideChar) + 1); StringToWideChar(Msg, MessagetextWideChar, Length(Msg) * SizeOf(WideChar) + 1); StringToWideChar(Dest, DestWideChar, 20 * SizeOf(WideChar) + 1);
if Source = '' then Result := NetMessageBufferSend(nil, DestWideChar, nil, MessagetextWideChar, Length(Msg) * SizeOf(WideChar) + 1) else begin GetMem(SourceWideChar, 20 * SizeOf(WideChar) + 1); StringToWideChar(Source, SourceWideChar, 20 * SizeOf(WideChar) + 1); Result := NetMessageBufferSend(nil, DestWideChar, SourceWideChar, MessagetextWideChar, Length(Msg) * SizeOf(WideChar) + 1); FreeMem(SourceWideChar); end; finally FreeMem(MessagetextWideChar); FreeLibrary(Handle); end; end;
function NetSend(Dest, Msg: string): Longint; overload; begin Result := NetSend(Dest, '', Msg); end;
function NetSend(Msg: string): Longint; overload; begin Result := NetSend('', '', Msg); end;
procedure TForm1.BitBtn1Click(Sender: TObject); const NERR_BASE = 2100; NERR_NameNotFound = NERR_BASE + 173; NERR_NetworkError = NERR_BASE + 36; NERR_Success = 0; var Res: Longint; sMsg: string; begin Res := NetSend(edit1.text, edit2.text);
case Res of ERROR_ACCESS_DENIED: sMsg := 'user does not have access to the requested information.'; ERROR_INVALID_PARAMETER: sMsg := 'The specified parameter is invalid.'; ERROR_NOT_SUPPORTED: sMsg := 'This network request is not supported.'; NERR_NameNotFound: sMsg := 'The user name could not be found.'; NERR_NetworkError: sMsg := 'A general failure occurred in the network hardware.'; NERR_Success: sMsg := 'Message sent!'; end; ShowMessage(sMsg);
end; |
Soweit funktionierts auch.
Und jetzt brauch ich eure hilfe:
Ich möchte in einem Editfeld den Absendernamen eingeben und er soll dann logisch auch aufscheinen.
Es müsste in diesem Quelltext möglich sein! Da steht nämlich am Anfang:
Delphi-Quelltext 1: 2: 3: 4:
| function NetSend(dest, Source, Msg: string): Longint; overload; type TNetMessageBufferSendFunction = function(servername, msgname, fromname: PWideChar; buf: PWideChar; buflen: Cardinal): Longint; |
nur wie kann ich jetzt irgendwie ein Editfeld auf das fromname übertragen?
Bitte helft mir!
Moderiert von Peter Lustig: Code- durch Delphi-Tags ersetzt.
|
|
patrick
      
Beiträge: 1481
WIN2k, WIN XP
D6 Personal, D2005 PE
|
Verfasst: Sa 26.06.04 09:58
da hilft dir dei funktion pwidechar weiter.
guck mal in der delphihilfe dannach.
dort gibts n haufen zusätzliche funktionen wie
WideCharToString(Source: PWideChar): string;
oder
StringToWideChar(const Source: string; Dest: PWideChar; DestSize: Integer): PWideChar;
und n paar beispiele dazu
_________________ Patrick
im zweifelsfall immer das richtige tun!!!
|
|
geilo 
Hält's aus hier
Beiträge: 6
|
Verfasst: Sa 26.06.04 10:57
Ich versteh nicht ganz wo ich den einbauen soll und wie, so:
fromname:=StringToWideChar(const Source: string; Dest: PWideChar; DestSize: Integer): PWideChar;
aber wo gibt man hier das Editfeld an?
Wäre dir sehr dankbar wenn du mir nochmal helfen könntest!
|
|
patrick
      
Beiträge: 1481
WIN2k, WIN XP
D6 Personal, D2005 PE
|
Verfasst: Sa 26.06.04 12:25
das sollte wohl mehr so aussehen:
das was da steht sind die parameter der fuktion. die du durch eine variablen erstetzten must
Delphi-Quelltext 1:
| StringToWideChar(edit1.text,fromname; sizeof(edit1.text)); |
hier die beschreibung dazu aus der delphihilfe:
| Zitat: |
function StringToWideChar(const Source: string; Dest: PWideChar; DestSize: Integer): PWideChar;
Description
StringToWideChar converts the string given by Source from ANSI to UNICODE and stores the result in the buffer given by Dest and DestSize. Following the call, the Dest buffer contains at most DestSize - 1 characters from the source string, terminated by a NULL wide character. The function returns a pointer to Dest.
|
_________________ Patrick
im zweifelsfall immer das richtige tun!!!
|
|
obbschtkuche
Gast
Erhaltene Danke: 1
|
Verfasst: Sa 26.06.04 12:33
|
|
geilo 
Hält's aus hier
Beiträge: 6
|
Verfasst: Sa 26.06.04 12:33
Tschuldigung wenn ich nochmal frage,
Wo soll ich
StringToWideChar(edit1.text,fromname; sizeof(edit1.text));
einsetzen, in die Funktion, oder wenn man auf den Sende Button drückt?
|
|
geilo 
Hält's aus hier
Beiträge: 6
|
Verfasst: Sa 26.06.04 12:40
Das problem ist folgendes:
StringToWideChar(edit1.text,fromname; sizeof(edit1.text));
Wenn ich das auf den Sende Button programmiere kennt mein Delphi 6 die Variable formname nicht, wenn ich es in den Begin - End teil des funktion Quellcodes einfüge kommt komischerweiße die Fehlermeldung bei edit1.text, genauer gesagt bei edit1
|
|
raziel
      
Beiträge: 2453
Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
|
Verfasst: Sa 26.06.04 14:47
Hi,
Ich hätt spontan gesagt, so:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| procedure TForm1.BitBtn1Click(Sender: TObject); const NERR_BASE = 2100; NERR_NameNotFound = NERR_BASE + 173; NERR_NetworkError = NERR_BASE + 36; NERR_Success = 0; var Res: Longint; sMsg: string; begin Res := NetSend(edit1.text, edit3.text , edit2.text); case Res of ERROR_ACCESS_DENIED: sMsg := 'user does not have access to the requested information.'; ERROR_INVALID_PARAMETER: sMsg := 'The specified parameter is invalid.'; ERROR_NOT_SUPPORTED: sMsg := 'This network request is not supported.'; |
raziel
_________________ JSXGraph
|
|
Hack Gott
      
Beiträge: 409
Windows Vista
Delphi 2005 Personal, Delphi 7
|
Verfasst: Fr 28.01.05 15:17
Titel: Edit???
Und was steht dann in edit1 bzw. edit2??? 
_________________ "Je mehr Käse, desto mehr Löcher; Je mehr Löcher, desto weniger Käse. Daraus folgt: Je mehr Käse desto weniger Käse!"
|
|
|