AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Undeclared Identifier HTTP

Ein Thema von Erutan · begonnen am 22. Aug 2013 · letzter Beitrag vom 22. Aug 2013
Antwort Antwort
Erutan

Registriert seit: 16. Mär 2013
71 Beiträge
 
Delphi 7 Professional
 
#1

Undeclared Identifier HTTP

  Alt 22. Aug 2013, 02:57
Delphi-Version: 5
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

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

Registriert seit: 16. Mär 2013
71 Beiträge
 
Delphi 7 Professional
 
#2

AW: Undeclared Identifier HTTP

  Alt 22. Aug 2013, 03:14
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.
Holger
  Mit Zitat antworten Zitat
Erutan

Registriert seit: 16. Mär 2013
71 Beiträge
 
Delphi 7 Professional
 
#3

AW: Undeclared Identifier HTTP

  Alt 22. Aug 2013, 03:47
...und schon habe ich das nächste Problem

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:

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:

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....
Holger
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#4

AW: Undeclared Identifier HTTP

  Alt 22. Aug 2013, 04:12
Ü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 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 FloatToStr() eine Funktion verwenden, die immer einen Punkt als Dezimaltrenner erzeugt.
fork me on Github
  Mit Zitat antworten Zitat
Erutan

Registriert seit: 16. Mär 2013
71 Beiträge
 
Delphi 7 Professional
 
#5

AW: Undeclared Identifier HTTP

  Alt 22. Aug 2013, 21:59
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.
Holger
  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 18:54 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