Freepascal <-> Metatrader

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
mtbf40
Beiträge: 72
Registriert: Do 3. Nov 2011, 16:39

Re: Freepascal <-> Metatrader

Beitrag von mtbf40 »

Habe mal eine generelle Frage zu einem Problem:

Ich habe zwei identische Grids (realisiert mit KGrids) - der einzige Unterschied besteht darin, dass sie in unterschiedlichen Sheets eines PageControl liegen - Trades1: KGrid bzw. Trades2: KGrid

Das befüllen erfolgt über eine DLL die mit Metatrader verbunden ist - und zwar einmal die OpenOrders und das andere mal die History (geschlossene Trades).
Was ich jetzt umgehgen will ist folgendes: ich möchte dafür nicht mehrere gleiche Prozeduren dafür schreiben, sondern nur eine verwenden.
Ich hatte mir überlegt mit Records zu arbeiten, die ich jeweils an die Prozedur übergebe.

Ist dies sinnvoll oder was ist dafür die beste Lösung?

Ich hoffe das die Beschreibung verständlich ist??!! :?: :!:

mtbf40
Beiträge: 72
Registriert: Do 3. Nov 2011, 16:39

Re: Freepascal <-> Metatrader

Beitrag von mtbf40 »

Hallo,

habe gerade folgendes Phänomen festgestellt:

ich habe eine Tabelle mit verschiedenen Werten. Die Werte kommen über eine Liste aus Metatrader.
Jetzt möchte ich einfach nur zwei Werte (Strings) vergleichen:

Code: Alles auswählen

var strDummy,symbol,zelle : AnsiString;
<symbol> ermittel ich über auslesen
zelle := initialTrade.Cells[1,initialTrade.ColCount];
 
R:=AnsiCompareText(zelle,symbol); -> funktioniert nicht R=0
R:=AnsiCompareText('USDCHF','GBPUSD'); -> funktioniert R=1

was läuft da falsch???

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Freepascal <-> Metatrader

Beitrag von Socke »

mtbf40 hat geschrieben:

Code: Alles auswählen

var strDummy,symbol,zelle : AnsiString;
<symbol> ermittel ich über auslesen
zelle := initialTrade.Cells[1,initialTrade.ColCount];
 
R:=AnsiCompareText(zelle,symbol); -> funktioniert nicht R=0
R:=AnsiCompareText('USDCHF','GBPUSD'); -> funktioniert R=1

was läuft da falsch???


Schau dir doch mal bitte die Werte der beiden Variablen zelle und symbol vor dem Vergleich an. Wenn sie nicht gleich aussehen, solltest du auch nochmal ein wenig tiefer hineinschauen und jedes Byte miteinander vergleichen -- zum Beispiel mit strcomp(). Sollten sie hingegen gleich aussehen, wäre es durchaus möglich, dass sie gleich sind.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

mtbf40
Beiträge: 72
Registriert: Do 3. Nov 2011, 16:39

Re: Freepascal <-> Metatrader

Beitrag von mtbf40 »

danke für den Hinweis...
habe den Fehler gefunden - die Variable Zelle wird ausgelesen nach dem <symbol> in die Zelle geschrieben wurde :roll:

mtbf40
Beiträge: 72
Registriert: Do 3. Nov 2011, 16:39

Re: Freepascal <-> Metatrader

Beitrag von mtbf40 »

ich bin's wieder - mit einer neuen Herausforderung:

in dem Anhang habe ich mal versucht die Situation aufzuzeichnen
wie kann man das am effektivsten machen - mit TList/TStringList od. mit Array von Records (über Pointer) od. über Streams
kann mir da jemand auf die Sprünge helfen - mit einer kleinen schematischen Darstellung
Dateianhänge
array_of_record.png

Antworten