AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi maximale Länge von Zeichenkette bei WM_COPYDATA??
Thema durchsuchen
Ansicht
Themen-Optionen

maximale Länge von Zeichenkette bei WM_COPYDATA??

Ein Thema von stz · begonnen am 6. Jun 2006 · letzter Beitrag vom 7. Jun 2006
Antwort Antwort
Benutzerbild von stz
stz

Registriert seit: 8. Sep 2005
Ort: Neuendeich, Lübeck
277 Beiträge
 
Turbo Delphi für Win32
 
#1

maximale Länge von Zeichenkette bei WM_COPYDATA??

  Alt 6. Jun 2006, 18:04
Hallo zusammen,
ich habe mich an WM_COPYDATA, wie in der Code-Library beschrieben, versucht, bin aber irgendwie gescheitert. Von meinem zu übertragenden Text sind immer nur die ersten 48 Zeichen (wenn ich mich nicht verzählt habe) angekommen. Was mache ich falsch, oder muss das so?

schon mal besten Dank für eure Hilfe

PS: Ich hoffe ich bin an der richtigen Stelle für meine Frage gelandet...
Malte Schmitz
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: maximale Länge von Zeichenkette bei WM_COPYDATA??

  Alt 6. Jun 2006, 18:08
So weit ich weiß gibt es bei wm_copydata keine Größenbeschränkung (zumindest nicht so eine geringe). Kannst du mal den Source posten wie du die Daten überträgst? Hast du eventuell eine falsche Größe für deine Daten angegeben?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von stz
stz

Registriert seit: 8. Sep 2005
Ort: Neuendeich, Lübeck
277 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: maximale Länge von Zeichenkette bei WM_COPYDATA??

  Alt 6. Jun 2006, 18:17
versteh ich nicht also, hier mein source:
Delphi-Quellcode:
procedure TCopyDataForm.FormCreate(Sender: TObject);
var
  aCopyData: TCopyDataStruct;
  p: PChar;
begin
  p := 'ganz'#13#10'langer string';
  with aCopyData do
  begin
    dwData := 0;
    cbData := StrLen(p) + 1;
    lpData := p;
  end;
  SendMessage(StrToInt(Copy(ParamStr(1), 4, Length(ParamStr(1)) - 3)), WM_COPYDATA,
              LongInt(Handle), LongInt(@aCopyData));
end;
macht natürlich keinen sinn so, aber ich habs mal ein wenig gekürzt. normalerweise will ich reagieren, wenn ich mein programm mit /s:handle aufgerufen wurde und an den angegebenen handle was senden, aber wie gesagt, die prüfungen hab ich rausgeschmissen
Malte Schmitz
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: maximale Länge von Zeichenkette bei WM_COPYDATA??

  Alt 6. Jun 2006, 18:25
arbeitest du in deinem richtigen Programm auch mit "pchar" und weißt dem einen staatichen String zu?
Ich weiß nicht woran es liegt, aber ich hatte bei einer ApiFunktion damit auch schon Probleme wenn ich einen staatichen PChar übergeben hab. Wenn ich den Text dynamich übergeben hab (anhand der Eingabe eines Edits etc.) hat es geklappt. Wie sieht der Source auf der Gegenseite aus? (soweit stimmt beim dem Source eigentlich alles)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von stz
stz

Registriert seit: 8. Sep 2005
Ort: Neuendeich, Lübeck
277 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: maximale Länge von Zeichenkette bei WM_COPYDATA??

  Alt 6. Jun 2006, 18:32
Meine Gegenseite (genau genommen nur eine andere Instanz des gleichen Programms):
Delphi-Quellcode:
procedure TCopyDataForm.WMCopyData(var Msg: TWMCopyData);
begin
  Memo1.Lines.Add('nachricht von ' + IntToStr(Msg.From));
  Memo1.Lines.Add(String(Msg.CopyDataStruct.lpData));
end;
und die Wahrheit über das Senden:
p := PChar('SearchInstructions:'#13#10 + SearchInstructions); wobei ich SearchInstructions vorher aus statischen Strings und einer StringGrid-Zelle zusammensetze
(damit gehts genauso wenig )
Malte Schmitz
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: maximale Länge von Zeichenkette bei WM_COPYDATA??

  Alt 6. Jun 2006, 18:47
Moin stz,

wenn Du am Ziel auch String(....) stehen hast, mache daraus mal PChar(...)
Dann funktioniert es.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von stz
stz

Registriert seit: 8. Sep 2005
Ort: Neuendeich, Lübeck
277 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: maximale Länge von Zeichenkette bei WM_COPYDATA??

  Alt 6. Jun 2006, 19:09
jaaaa das wars

super! und wieder habt Ihr einen armen kleinen Coder glücklich gemacht.

PS: Könnt Ihr diesen segensreichen Hinweis vielleicht auch hier ergänzen?
http://www.delphipraxis.net/internal...ect.php?t=2832
Malte Schmitz
  Mit Zitat antworten Zitat
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#8

Re: maximale Länge von Zeichenkette bei WM_COPYDATA??

  Alt 7. Jun 2006, 11:22
Noch eine Anmerkung:


Beachtet wenn ihr Daten über Strings (pchars) versendet/tunnelt: Für char-strings bedeutet das #0 Zeichen das Ende der Zeichenkette. In diesem Falle müßt ihr die Länge der Daten unbedingt mit übergeben - wie es Delphi-Strings tun.
Wer später bremst ist eher tot.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz