Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Undeclared Identifier HTTP (https://www.delphipraxis.net/176252-undeclared-identifier-http.html)

Erutan 22. Aug 2013 01:57

Delphi-Version: 5

Undeclared Identifier HTTP
 
Hallo,

ich vesuche seit zwei Tagen, die Daten von zwei Edit-Feldern per TIdHTTP (Indy) an ein PHP-Script zu schicken, das auf meinem Server liegt.

Doch ich komme nicht mal bis zum erste Versandtest weil Delphi den Code nicht kompilieren will und ich keine Idee habe, warum.

Hier der Code:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Strings: TStringList;
begin
  Strings := TStringList.Create;
  Button1.Enabled := False;
  try
    Strings.Add('mode=write');
    Strings.Add('Name='+Edit1.Text);
    Strings.Add('Werte='+Edit2.Text);

    try
      HTTP.Post('http://www.host-a.de/test/teintrag.php', Strings);
    except
     on E: Exception do
       showmessage('Error encountered during POST: ' + E.Message);
    end;
  finally
    Strings.Free;
  end;
  Button1.Enabled := True;
end;
Der Compiler meckert an dieser Zeile

Delphi-Quellcode:
 HTTP.Post('http://www.host-a.de/test/teintrag.php', Strings);
mit der Fehlermeldung: Undeclared Identifier 'HTTP'. Das kann aber doch nicht sein, oder?

Erutan 22. Aug 2013 02:14

AW: Undeclared Identifier HTTP
 
Oh, sorry, ich Hornochse. Da sitze ich Stund um Stund - dann schreibe ich nen Hilferuf....und finde den Fehler.

Statt HTTP.Post muß natürlich IdHTTP.Post da stehen. :roll:

Erutan 22. Aug 2013 02:47

AW: Undeclared Identifier HTTP
 
...und schon habe ich das nächste Problem :roll:

Das Senden klappt einwandfei. Kommt auch in der MySQL-Datenbank auf dem Server an und kann ausgegeben werden.
Siehe: http://www.host-a.de/test/tabfrage.php

Nun soll der rechte Wert jedoch eine Zahl vom Typ Real bzw. Float sein.
Delphi ermittelt die Zahl auch und die MySQL-Datenbank erwartet einen solchen Wert (steht auf Float).

Nur meckert Delphi wenn ich die Zahl als reine Variable einsetzn will, etwa so:

Delphi-Quellcode:
Strings.Add('Wert='+ ergebnis);
Ist auch klar, denn Strings und Zahlen können nun mal nicht miteinander.

Ich könnte das jetzt einfach so einsetzen:

Delphi-Quellcode:
Strings.Add('Wert='+ FloatToStr(ergebnis));
Dann geht das Kompilieren glatt und das Progrämmchen versenet auch....nur dann eben leider als Text und nicht als Zahlenwert, was dazu führt, daß die MySQL-Datenbank nichts damit anfangen kann und 0 einträgt.

Auch das könnte ich ändern indem ich das bei der Datenbank als Text einstelle...aber ich abe das Problem, daß ich mit den Zahlen rechnen will. Sie sollen nicht nur angezeigt werden, sondern letztendlich soll daraus ein Durchschnittswert berechnet werden.

Nun stellt sich mir die Frage wie ich den Inhalt der Variable 'ergebnis' als Floatwert versenden kann....

sx2008 22. Aug 2013 03:12

AW: Undeclared Identifier HTTP
 
Über HTTP Parameter kannst du nur Strings verschicken.
Daher musst du das in deinem PHP-Script regeln dass aus dem Wert von Stringdarstellung nach Float gewandelt wird.
Eine kleine Schwierigkeit ist, dass
Delphi-Quellcode:
StrToFloat()
als Dezimaltrennzeichen ein Komma erzeugt während PHP hier einen Punkt erwartet.
Quick & Dirty Lösung dafür:
Delphi-Quellcode:
var
  oldDS : char;
...
oldDS := DecimalSeparator;
DecimalSeparator := '.';
Strings.Add('Wert='+ FloatToStr(ergebnis));
DecimalSeparator := oldDS;
Später kannst du statt
Delphi-Quellcode:
FloatToStr()
eine Funktion verwenden, die immer einen Punkt als Dezimaltrenner erzeugt.

Erutan 22. Aug 2013 20:59

AW: Undeclared Identifier HTTP
 
Danke Dir. Den Dezimalpunkt hatte ich schon gesetzt. Mittlerweile habe ich auch festgestellt, daß ich die MySQL-Spalte ruhig auf FLOAT stehen lassen kann - die Werte werden dennoch eingefügt. Sie waren 0 weil ich mich beim Spaltennamen vertippt hatte (Wert statt Werte).

Wenn nun alles gut geht, kann ich mit den Werten wie geplant rechnen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:48 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