Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Suche einen Fehlerfinder! (https://www.delphipraxis.net/133313-suche-einen-fehlerfinder.html)

LDericher 29. Apr 2009 14:50


Suche einen Fehlerfinder!
 
Also, es geht um eine Übersetzung von AutoIt nach Delphi... Man sehe dazu HIER nach.

Wer den Fehler findet, kriegt einen Keks von mir!

MfG, Der LDer!

EWeiss 29. Apr 2009 14:53

Re: Suche einen Fehlerfinder!
 
Versuchs mal mit Packed Record

gruss Emil

hoika 29. Apr 2009 14:54

Re: Suche einen Fehlerfinder!
 
Hallo,

ist das VB ?
Dann musst du String[255] statt String verwenden.

*Keks haben wollen*


Heiko

EWeiss 29. Apr 2009 14:56

Re: Suche einen Fehlerfinder!
 
Zitat:

Zitat von hoika
Hallo,

ist das VB ?
Dann musst du String[255] statt String verwenden.

*Keks haben wollen*


Heiko

Kein VB!
Sieht mir eher nach PB - Powerbasic aus
Und da muss man den Record auf Packed setzen da hier das erste byte verschoben wird im Record.

gruss Emil

LDericher 29. Apr 2009 15:01

Re: Suche einen Fehlerfinder!
 
Bringt's leider beides nicht, aber danke für deine Idee schonmal

Das Zielprogramm reagiert noch nicht einmal mit Schwachsinn, und es ist AutoIt-Script, kein VB - denke aber, dass das recht ähnlich ist^^

Gruß vom LDer

nahpets 29. Apr 2009 15:16

Re: Suche einen Fehlerfinder!
 
Hallo,

ändere bitte mal den
Delphi-Quellcode:
TStringRecord=record
  var1:string;
end;
in
Delphi-Quellcode:
TStringRecord=record
  var1:string[255];
end;
und natürlich alles, was dann damit zusammenhängt.
Meine mich schwach daran erinnern zu können, bei Strings ohne Längenangabe in Records immer Probleme gehabt zu haben.

Einfacher werden die Änderungen vermutlich, wenn Du CDString in einen String änderst und auf var1 verzichtest.
Delphi-Quellcode:
function _SendData(vData, ReceiverTitle:string):boolean;
type
  // TStringRecord=record
  //   var1:string[255];
  // end;
  TlParamRecord=record
    none,
    count:word;
    Pointer:Cardinal;
  end;
var
  // CDString:TStringRecord;
  CDString:String;
  vs_cds:TlParamRecord;
  pCDString,
  pStruct:Cardinal;
  strLen:integer;
  hwndRec:HWND;
const
  MHAdditionalIdentifier='_CAL987qwerty2468';
  WM_COPYDATA_MH=$4A;
begin
Result:=true;
if(Length(ReceiverTitle)=0)
  then Result:=false
  else begin
  ReceiverTitle:=ReceiverTitle+MHAdditionalIdentifier;
  strLen:=Length(vData);
  // SetLength(CDString.var1, strLen);
  SetLength(CDString, strLen);
  // CDString.var1:=vData;
  CDString:=vData;
  pCDString:=integer(@CDString);
  vs_cds.count:=strLen+1;
  vs_cds.Pointer:=pCDString;
  pStruct:=integer(@vs_cds);
  hwndRec:=FindWindow('AutoIt v3 GUI', PAnsiChar(ReceiverTitle));
  if(hwndRec=0)
    then Result:=false
  else if(SendMessage(hWndRec, 74, 0, pStruct)=0)
    then Result:=false;
  end;
end;

LDericher 29. Apr 2009 15:21

Re: Suche einen Fehlerfinder!
 
Bringt auch nix... Meiner Meinung nach müsste das Empfängerprogramm doch wenigstens eine Ausgabe machen, da es ja eine Eingabe bekommen sollte per SendMessage...
Also zumindest irgendeine sinnfreie Zeichenkette ausspucken...? Oder nicht?

Na ja, ich bin hier langsam echt am verdreifeln -.-

LDer.

nahpets 29. Apr 2009 15:30

Re: Suche einen Fehlerfinder!
 
Hallo,

Empfängerprogramm: Welches Programm ist das? Wird es wirklich gefunden?
Sprich:
Delphi-Quellcode:
 
if(hwndRec=0) then begin
  ShowMessage('AutoIt v3 GUI wurde nicht gefunden.');
  Result:=false;
end else
if (SendMessage(hWndRec, 74, 0, pStruct)=0) then begin
  ShowMessage('SendMessage war erfolgreich');
  Result:=false;
end else begin
  ShowMessage('SendMessage war nicht erfolgreich!');
end;
Was bekommst Du hier zu sehen?

LDericher 29. Apr 2009 15:41

Re: Suche einen Fehlerfinder!
 
SendMessage liefert 0, kurz gesagt.

nahpets 29. Apr 2009 15:47

Re: Suche einen Fehlerfinder!
 
Hallo,

liegt der Fehler beim Empfänger?

An Stelle von
Delphi-Quellcode:
pCDString:=integer(@CDString);
vs_cds.count:=strLen+1;
vs_cds.Pointer:=pCDString;
pStruct:=integer(@vs_cds);
mal bitte das
Delphi-Quellcode:
pCDString:=DWord(@CDString);
vs_cds.count:=strLen+1;
vs_cds.Pointer:=pCDString;
pStruct:=DWord(@vs_cds);
Allerdings ist das was ich hier mache bestenfalls noch als :glaskugel: zu bezeichnen, 'ne vernünftige Idee zur Problemlösung habe ich nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:10 Uhr.
Seite 1 von 2  1 2      

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