Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Pchar Rückgabe (https://www.delphipraxis.net/1883-pchar-rueckgabe.html)

berbog 29. Dez 2002 11:02


Pchar Rückgabe
 
:freak: Hallo ich habe ein Anfängerproblem.
Als Rückgabe aus einer Dll bekomme ich einen Wert mit Vorzeichen zurück (z.b. +0029) wie wandele ich diesen in einen Integer Wert um.
Danke im Voraus.

CalganX 29. Dez 2002 11:30

Hm... Wenn's nicht PChar, sondern String wäre könntest du das mit StrToInt machen (funktioniert auch mit Vorzeichen)...

Chris

Sebastian Nintemann 29. Dez 2002 12:18

Also bei mir funktionierts auch mit PChar:

Delphi-Quellcode:
var
  p: PChar;
  s: string;
  i: integer;
begin
  s := '+2345';
  p := PChar(s);
  i := StrToInt(p);

  Caption := IntToStr(i) //In der Caption stehts dann (bei +) ohne Vorzeichen
end;
Keinerlei Meckereien von Delphi
Gruß, Sebastian

CalganX 29. Dez 2002 12:19

Ja gut.

Chris

berbog 29. Dez 2002 12:25

Hallo Chris
Strtoint habe ich versucht, aber der compiler bringt mir eine Fehlermeldung (Im ProjektProjekt 1.exe ist eine Exception der Klasse EConvertError aufgetreten.Meldung "4|' ist kein gültiger Integer Wert'.) Dieser Wert wird mir aber vorher bei der Zeile label4.caption := (analog1) richtig mit +0029 angezeigt.Ich versuche diesen wert Im Diagramm (Chart) anzuzeigen.

DerKapitalist 29. Dez 2002 12:36

Code:
var
 p: PChar;
 i: integer;
begin
  p := PChar(edit1.Text);
  i := StrToInt(p);
end;
Klappt bei mir auch, warum sollet es auch nicht gehen, aber:

"4|" ist nunmal kein Zahlenwert -> deine Funktion liefert dir einen string und keinen Zahlenwert. Poste mal bitte den gesamten relevanten Code.

Sebastian Nintemann 29. Dez 2002 12:37

Hallo berbog, und wenn du mit string() typecastest?

Die Hilfe sagt aber das:

Zitat:

Zitat von Delphi Hilfe
You can mix long strings (AnsiString values) and null-terminated strings (PChar values) in expressions and assignments, and you can pass PChar values to functions or procedures that take long-string parameters. The assignment S := P, where S is a string variable and P is a PChar expression, copies a null-terminated string into a long string.
In a binary operation, if one operand is a long string and the other a PChar, the PChar operand is converted to a long string.

Gruß, Sebastian

DerKapitalist 29. Dez 2002 12:41

das mein ich ja auch, ich denke nciht,dass das was mit pChar zu tun hat

Sebastian Nintemann 29. Dez 2002 12:51

Ja, das vermute ich auch.
Zitat:

Zitat von berbog
Dieser Wert wird mir aber vorher bei der Zeile label4.caption := (analog1) richtig mit +0029 angezeigt

Wenn das so ist müss es doch funktionieren, stellst du zwischenzeitlich noch irgendwas mit dem PChar an? Du kannst ja mal ein bisschen Code posten bzw vorher nochmal prüfen, ob der String den du in Integer umwandeln willst auch wirklich eine gültige Zahl ist, sie wies aussieht siehts nämlich nicht so aus :spin:

Gruß, Sebastian

DerKapitalist 29. Dez 2002 12:55

ja, oder bist du sicher, dass deine DLL nicht zwischenzeitlich den PChar modifiziert? Bei Übergabe von PChars erhaellst du naemlich keine Kopie der Daten sondern das Original.
Oder vielleicht hast du auch nicht Thread-safe programmiert. naja, möglich wärs ja :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:47 Uhr.
Seite 1 von 3  1 23      

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