Autor Beitrag
Schosch Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46

WinXP
Lazarus
BeitragVerfasst: Do 22.12.11 15:57 
user profile iconNersgatt hat folgendes geschrieben Zum zitierten Posting springen:


Wenn Du dann noch Zeit übrig hast, kannst Du das Programm noch erweitern. Z.B. dass der Benutzer selbst eingeben kann, welche Währungen er gern hätte (nicht mehr festcodiert).


Genau dass ist eine Aufgabe, die ebenfalls zu erfüllen ist...

Genau Beschreibung der Aufgabe: Eine Auswahl mehrere Währungen ermöglichen, die in Euro umzurechnen sind. Und die gesammte summe (Dollar+Yen+.... ) in einem Ausgabe Feld als Euro ausgeben. Die wechselkurse müssen vor jedem aufrufen des Formulars aktualliesiert werden um sicher zu gehen, dass bei jedem benutzen des Programms die angaben auch korreckt sind.

Das is der Kern der Aufgabe und das plus noch ein paar kleine Furmularextras (die aber kein ding sind) muss erfüllt sein!!!
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Do 22.12.11 16:00 
Dann mal frisch ans Werk! Ich denke, genug Hinweise zu Lösungsansätzen hast Du jetzt erst mal bekommen. Jetzt liegt es an Dir. :wink:

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
Schosch Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46

WinXP
Lazarus
BeitragVerfasst: Do 22.12.11 16:34 
Glaube ich auch, Ich bedanke mich bei allen die mir geholfen haben ^^ Vielen Dank!!! Solte ich noch weitere Fragen haben wende ich mich wieder ans Forum...

MFG Schosch
Schosch Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46

WinXP
Lazarus
BeitragVerfasst: Do 26.01.12 18:43 
user profile iconbummi hat folgendes geschrieben Zum zitierten Posting springen:
wobei IMHO, das folgende schon die halbe Miete wäre ... (Memo nur zur Demo)

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm2.Button1Click(Sender: TObject);
var
 s:TStringStream;
begin
   s:=TStringStream.Create;
   try
     idHttp1.Get('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml',s);
     Memo1.Lines.Text := s.DataString;
   finally
     s.Free;
   end;
end;


@bummi

kannst du diesen Quellcode mal genauer definieren?? z.b. was ist hier 's' und wie würde die Klasse aussehen??
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 26.01.12 19:24 
Moin!

Ich weiß nicht genau, warum bummi den Quelltext so vorgeschlagen hat, aber die Indies liefern bei der .Get-Methode direkt einen String, also könnte man das etwas kürzer auch so machen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm2.Button1Click(Sender: TObject);
begin
  try
    Memo1.Text := idHttp1.Get('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml');
  except
    ShowMessage('Es ist ein Fehler aufgetreten!');
  end;
end;
Pack den Code doch einfach mal in einen Button-Handler und schau, was passiert. :idea: ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Schosch Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46

WinXP
Lazarus
BeitragVerfasst: Do 26.01.12 19:29 
der erkennt "idHttp1" nich, und weil ich noch nich genau weiß wie ich hier ne klasse einrichten muss, habe ich nachgefragt... weil ich mal denke, dass "idHttp1" ne Eigenschaft einer Klasse ist.. Also wie sollte denn die Ankündigung der Klasse aussehen??
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19274
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 26.01.12 19:34 
Du musst dafür die TIdHttp Komponente auf dem Formular haben. Oder du erstellst sie dynamisch:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
uses
  IdHttp;

var
  HttpLoader: TIdHttp;
  PageContents: String;
begin
  HttpLoader := TIdHttp.Create;
  try
    Memo1.Text := HttpLoader.Get('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml');
  finally
    HttpLoader.Free;
  end;
end;
Schosch Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46

WinXP
Lazarus
BeitragVerfasst: Do 26.01.12 20:03 
tjaa, jetzt kommt da diese fehlermeldung...

Unit1.pas(x,y) Fatal: Can't find unit idHttp used by Unit1

Moderiert von user profile iconNarses: Beiträge zusammengefasst

als bis jetzt hab ich die wechselkurse lokal drinn, also noch komplett ohne zusammenhang zur API....

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
var Eurowert: Array[0..9of real;
    Waehrungen: Array[0..9of real;

procedure TForm1.B_OKClick(Sender: TObject);
var Eingabeok: boolean;
begin
Eingabeok:=true;

// an dieser Stelle kommt eine Eingabe überpfüfung
// Wenn die Eingabe fehlerhaft ist (z.B Buchstaben anstatt zahlen.... wird Eingabeok auf false gesetzt...

  If Eingabeok=True then
     begin
       Eurowert[0]:=StrToFloat(TF_Australien.Text)/Waehrungen[0] ;
       Eurowert[1]:=StrToFloat(TF_China.Text)/Waehrungen[1];
       Eurowert[2]:=StrToFloat(TF_Canada.Text)/Waehrungen[2];
       Eurowert[3]:=StrToFloat(TF_DK.Text)/Waehrungen[3];
       Eurowert[4]:=StrToFloat(TF_GBr.Text)/Waehrungen[4];
       Eurowert[5]:=StrToFloat(TF_Indien.Text)/Waehrungen[5];
       Eurowert[6]:=StrToFloat(TF_Japan.Text)/Waehrungen[6];
       Eurowert[7]:=StrToFloat(TF_Schweden.Text)/Waehrungen[7];
       Eurowert[8]:=StrToFloat(TF_Schweiz.Text)/Waehrungen[8];
       Eurowert[9]:=StrToFloat(TF_USA.Text)/Waehrungen[9];
       Gesamt:=Eurowert[0]+Eurowert[1]+Eurowert[2]+Eurowert[3]+Eurowert[4]+Eurowert[5]+
               Eurowert[6]+Eurowert[7]+Eurowert[8]+Eurowert[9];

       TF_Euro.Text:=FloatToStrF(Gesamt, ffFixed, 102);
     end;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin

  Waehrungen[0]:=1.2332;      //Australien
  Waehrungen[1]:=8.2179;      //China
  Waehrungen[2]:=1.3129;      //Canada
  Waehrungen[3]:=7.4358;      //Dänemark
  Waehrungen[4]:=0.83625;     //Groß Britanien
  Waehrungen[5]:=65.0780;     //Indien
  Waehrungen[6]:=100.10;      //Japan
  Waehrungen[7]:=8.7791;      //Schweden
  Waehrungen[8]:=1.2061;      //Schweiz
  Waehrungen[9]:=1.3017;      //USA
end;
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 27.01.12 00:30 
Moin!

user profile iconSchosch hat folgendes geschrieben Zum zitierten Posting springen:
tjaa, jetzt kommt da diese fehlermeldung...

Unit1.pas(x,y) Fatal: Can't find unit idHttp used by Unit1
Und, was könnte das wohl bedeuten? Schonmal einen Gedanken daran verschwendet, was dieses ominöse IdHTTP überhaupt sein soll? Sagt dir "Indy" irgendwas? Wie lange versuchst du schon, dich mit Delphi auseinanderzusetzen? Geht´s hier nur darum, eine (Schul-/Studium-/Sonstwas-)Aufgabe zu lösen und dann Adieu-Delphi? Oder soll die bisherige Herangehensweise tatsächlich zeigen, dass du ersthaft Interesse daran hast zu erlernen, was da passiert?

Bisher machst du c&p aus dem Forum in deinen Code, dann c&p der Fehlermeldung ins Forum - ohne weiteren erkennbaren Lösungsansatz deinerseits. Wie würdest du dich selbst einschätzen, wenn du an unserer Stelle wärst? :nixweiss:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Andreas L.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: Fr 27.01.12 11:05 
user profile iconSchosch hat folgendes geschrieben Zum zitierten Posting springen:


Unit1.pas(x,y) Fatal: Can't find unit idHttp used by Unit1


Entweder liegt IdHTTP nicht im Suchpfad oder die Indy Komponente sind nicht installiert. Hier kannst du die Komponenten gratis laden:

www.indyproject.org/...Files/Indy10.DE.aspx

Installationsanleitung: www.indyproject.org/...nstallUninstall.html

Wenn du die Komponenten installiert hast kannst du sie wie Jänicke schon schrieb verwenden:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
uses ..., IdHTTP;

...

var
  http: TIdHTTP;
  html: String;
begin
  http := TIdHTTP.Create(nil);
  try
    // Quelltext herunterladen
    html := http.Get('http://www.google.de/');  

    // Etwas mit html machen, z. B. deine benötigten Werte auslesen
  finally
    FreeAndNil(http);
  end;
end;
Schosch Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46

WinXP
Lazarus
BeitragVerfasst: Fr 27.01.12 12:33 
was is eine Indy??? Also bis her hab ich schon mit Delphi befasst, aber der begriff Indy ist mir noch nicht untergekommen. Und ich habe auch vor weiterhin in dem Berreich der Programmierung zu agieren. Ich will hier ja auch was lernen, aber erstmal ist primär wichtig, dass ich so schnell wie möglich ne Lösung habe... ist ja auch nich so, dass ich sinnlos coppy and past mache, sondern ich versuche schon die angegebenen codes irgentwie sinnvoll einzubasteln... deswegen meine Frage, ob das was mit Klassen zu tun hat und wenn ja, wie diese klasse aussehen würde... aber jetzt kommt ihr mit Indy, was ich noch nie gehört habe... Ich hab ja gesagt, dass ich top-programmierer werden will, nich dass ich schon einer wäre... Und ich bin auch echt meeega dankbar für jede Hilfe.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19274
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 27.01.12 12:45 
user profile iconSchosch hat folgendes geschrieben Zum zitierten Posting springen:
was is eine Indy???
Eine Komponentensammlung für die Netzwerkkommunikation, die bei den meisten Delphiversionen bereits mitgeliefert wird.

In deinem Profil steht aber statt Delphi Lazarus. Was benutzt du denn nun, Delphi oder Lazarus? (Denn für Lazarus gibt es andere Komponenten...)
Schosch Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46

WinXP
Lazarus
BeitragVerfasst: Fr 27.01.12 13:20 
Ich benutze Lazarus... Hab zwar mit Delphi7 angegfangen, doch als die schulelizenz sbgelaufen ist haben wir zu lazarus gewechselt, weil es halt ne freeware ist...
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19274
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 27.01.12 14:30 
Da ich so gut wie gar nicht mit Lazarus arbeite, weiß ich nicht auswendig welche Komponenten es dafür gab. ICS oder so glaube ich z.B.

Bezüglich Indy für Lazarus siehe hier:
wiki.lazarus.freepas...rg/Indy_with_Lazarus
Schosch Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46

WinXP
Lazarus
BeitragVerfasst: Sa 28.01.12 17:40 
was macht dieser Befehl??

FreeAndNil(http);

bzw. ..Create(nil);

... ich hab noch nie was von Nil gehört...
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19274
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 28.01.12 17:53 
user profile iconSchosch hat folgendes geschrieben Zum zitierten Posting springen:
was macht dieser Befehl??

FreeAndNil(http);
Siehe Hilfe:
docwiki.embarcadero..../SysUtils.FreeAndNil

user profile iconSchosch hat folgendes geschrieben Zum zitierten Posting springen:
... ich hab noch nie was von Nil gehört...
Nil heißt nichts, in diesem Fall wird nichts, also kein Owner, übergeben. Sprich, die erzeugte Komponente soll niemandem hören, da du dich um die Freigabe selbst kümmerst. Genau das passiert dann bei Free bzw. FreeAndNil, wobei letzteres bei lokalen Variablen nichts bringt.
MDX
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 595
Erhaltene Danke: 4

Windows 8.1, Linux Debian 8, Android Lollipop
Delphi, PHP, Java (Android)
BeitragVerfasst: Sa 28.01.12 19:40 
Wie wärs mit "Hello World" als Abschlussarbeit? Wäre einfacher :D

Aber nein, jetzt mal im Ernst, benutz doch mal sowas wie ne Suchmaschine statt wegen jeder Kleinigkeit zu Fragen... :roll:
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Sa 28.01.12 19:45 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
{...} bzw. FreeAndNil, wobei letzteres bei lokalen Variablen nichts bringt.
Doch, tut es, genauso wie bei Feldern.
Erklärung: FreeAndNil() hat gegenüber Free den Vorteil, dass nicht nur Free aufgerufen wird, sondern auch noch die Referenz auf nil gesetzt wird. Damit bekommt man in "Use-After-Free" (also "nutzen nach dem Freigeben")-Situationen ordentliche Fehlermeldungen, an denen man direkt erkennt dass auf ein nil-Objekt zugegriffen werden sollte.

ausblenden (Konstruiertes) Beispiel:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
var list: TStringList;
begin
  //...
  list:= TStringList.Create;
  try
    list.LoadFromFile('blubb.txt');
    //...
  finally
    list.Free;
  end;
  //...
  list.Add('Test');
  //...
end;

Das kann nicht funktionieren (programmiert man auch zugegeben eher selten bis gar nicht, wenn man etwas mitdenkt), aber in der Form bekommt man in der EAccessViolation eine Adresse genannt, die "irgendwo" im Speicher liegt. Verwendet man stattdessen in Zeile 9 FreeAndNil(list), wird man eine Adresse in der ersen Speicherseite bekommen und erkennt daraus direkt, dass ein Zugriff auf ein nil-Objekt erfolgt ist.


Für eine Einführung in die Sprache wird immer wieder gerne auf den Crashkurs von Christian Stelzmann verwiesen. Mach ich dann hier auch mal ;)

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."

Für diesen Beitrag haben gedankt: Schosch
Schosch Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46

WinXP
Lazarus
BeitragVerfasst: Sa 28.01.12 22:37 
also langsam aber sicher nähere ich mich der endgültigen lösung... Doch so ein paar kleinigkeiten lassen mich immernoch verzweifel.

Also wenn ich jetzt diese Indy heruntergeladen und installiert habe erkennt der dann in der uses-klausel "IdHTTP"?
wenn nein muss ich was machen, damit der das erkennt????



Ich hab mir auch mal diese Seite hier angeguckt:

wiki.lazarus.freepas...ugen_einer_XML-Datei

dort finde ich ebenfalls angaben die Lazarus nicht kennt, wo aber nicht beschrieben wird, wieso und wass ich tun muss damit sich das ändert... (Bsp: var Doc: TXMLDocument; )
MDX
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 595
Erhaltene Danke: 4

Windows 8.1, Linux Debian 8, Android Lollipop
Delphi, PHP, Java (Android)
BeitragVerfasst: Sa 28.01.12 23:53 
Zitat:
Nachfolgend ist der komplette Code für das Schreiben in eine XML-Datei. (Er wurde einem Tutorial des DeveLazarus-Blogs entnommen.) Bitte denken Sie an den Verweis auf die Bibliotheken DOM und XMLWrite in der 'uses'-Klausel.


Wer lesen kann ist klar im Vorteil....