Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Lazarus (IDE) (https://www.delphipraxis.net/81-lazarus-ide/)
-   -   StringGrid mit string füllen geht nicht (https://www.delphipraxis.net/192437-stringgrid-mit-string-fuellen-geht-nicht.html)

stay 18. Apr 2017 18:12

StringGrid mit string füllen geht nicht
 
Hallo,

ich brauche schon wieder eure Hilfe, irgendwie habe ich ein Brett vor dem Kopf.
Meine StringGrid lässt sich nicht mit einem string füllen.
Ein Label auch nicht, nur ein Memo:

var

S0,S1,S2,S3 : string;
F : Text;


popen(F, ' i2cget -y 1 0x48 0x40','R');
Readln(F,S0);

Jetzt sollte das Ergebnis in S0 sein.

StringGrid.Cells[1,1] := S0; - geht nicht
Label1.Caption := S0; - geht nicht
Memo.lines.add(S0); - geht


Ich denke für euch ist das komplett logisch, ich verzweifel jedoch grade, wäre schön wenn jemand die Antwort postet.

Gruß

hoika 18. Apr 2017 18:31

AW: StringGrid mit string füllen geht nicht
 
Hallo,

geht nicht -> ein StringGrid hat keine Beine, kann also auch nicht gehen!

Nein, im Ernst: geht nicht ist keine Fehlermeldung !

Mehr Code bitte.

Was passiert, wenn du:
Delphi-Quellcode:
//popen(F, ' i2cget -y 1 0x48 0x40','R');
//Readln(F,S0);
S0 := 'hoika hat Recht';
StringGrid.Cells[1,1] := S0;

stay 18. Apr 2017 19:07

AW: StringGrid mit string füllen geht nicht
 
:oops: S0 := 'hoika hat Recht';

Es lag nicht daran, ich habe nur die ganze Zeit an der falschen Stelle gesucht. Das Problem lag in der Kommunikation zwischen Funktionen und dem nicht aktualisieren.

Kann ich den Post wieder löschen? :D

Aber Danke für deine schnelle Antowrt. :thumb:

Hobbycoder 18. Apr 2017 19:11

AW: StringGrid mit string füllen geht nicht
 
Was steht den in SO drin?

schon mal im Debugger geschaut? Sind dort führende Leerzeilen oder irgendwelche nicht druckbaren Zeichen enthalten?
Und was ist "popen"?

stay 18. Apr 2017 19:25

AW: StringGrid mit string füllen geht nicht
 
popen ist der Befehl um vom Programm auf das Terminal zu kommen um dort den I2C Bus abzugreifen. Nicht die schönste Art, aber naja.

Mit dem Debugger habe ich mich noch gar nicht so richtig befasst. Sollte ich aber mal. Wie gesagt, das Problem wurde gefunden. Auf zum nächsten :D

hoika 18. Apr 2017 19:45

AW: StringGrid mit string füllen geht nicht
 
Hallo,
warum löschen,
wenn andere (neuere) Entwickler das hier lesen,
und sich sagen, OK, String.Cells kann es nicht sein, ist das doch OK.

Aus Fehlern lernt man.

PS:
Ausserdem steht doch im S0 was nettes drin, wenn du meinen Code übernimmst ;)

EWeiss 18. Apr 2017 19:46

AW: StringGrid mit string füllen geht nicht
 
Zitat:

Ausserdem steht doch im S0 was nettes drin, wenn du meinen Code übernimmst
:thumb:

gruss

stay 18. Apr 2017 20:45

AW: StringGrid mit string füllen geht nicht
 
Ich muss euch nochmal belästigen, Thema Debugger..
Mein Programm hängt sich in unregelmäßigen Abständen auf. Immer bei der Umwandlung von Hex in Dezimal. Ich könnte jetzt von Try Methode bis hin zum Max Länge gucken, dass ich alles absichere. Allerdings, wenn ich es richtig verstanden habe, kann ich im Debugger sehen, wo der Fehler war? Das wäre natürlich sehr elegant. Wie komme ich dort ran?

Leider habe ich die Fehlermeldung schon weggeklickt, aber er zeigt halt immer einer der 4 Variablen Umwandlung an.

Gruß

p80286 18. Apr 2017 21:17

AW: StringGrid mit string füllen geht nicht
 
Zeig doch mal den Sourcecode, die Beschreibung ist doch ein wenig unpräzise.

Gruß
K-H

Hobbycoder 18. Apr 2017 21:58

AW: StringGrid mit string füllen geht nicht
 
Zitat:

Zitat von stay (Beitrag 1368176)
Ich könnte jetzt von Try Methode bis hin zum Max Länge gucken, dass ich alles absichere.

Und du tust auch gut daran es zu machen.

Debugger ist doch noch so schwer. Schon mal eine Haltepunkt gesetzt? Dann mal der Maus auf eine Variable, und Hint betrachten. Oder Cursor auf Variable und dann STRG+F5. Dann vielleicht mal mit der rechten Maustaste das Popup betrachten.
Manchmal ist es auch hilfreich sich für das debuggen eine Zwischenvariable zu setzen. Und natürlich möglichst kurze und kleine Proceduren und Funktionen, und nicht versuchen alles in einer Prozedur zu erledigen, da lauern die meisten Fehler. Mit kleine Proceduren lässt sich das auch besser und übersichtlicher absichern.

stay 18. Apr 2017 22:22

AW: StringGrid mit string füllen geht nicht
 
Ok, dann werde ich später alles absichern.

Haltepunkt setzen macht wenig Sinn, wie ich grade merken musste.
Es ist eine zyklische Abfrage alle 400ms. Der Fehler kommt alle 10-20 Minuten, ich muss ja bei der Haltemarke immer weiter drücken.


[zyklische abfrage]
popen (F,'i2cget -y 1 0x48 0x40''R');
Readln (F,S0)
popen (F,'i2cget -y 1 0x48 0x41''R');
Readln (F,S1)
popen (F,'i2cget -y 1 0x48 0x42''R');
Readln (F,S2)
popen (F,'i2cget -y 1 0x48 0x43''R');
Readln (F,S3)

[Ausgabe in StringGrid...]

A0 := StrToInt(S0);
A1 := StrToInt(S1);
A2 := StrToInt(S2);
A3 := StrToInt(S3);

[Bei den unteren 4 hängt er sich ab und zu auf]

himitsu 18. Apr 2017 22:39

AW: StringGrid mit string füllen geht nicht
 
Die Dateien werden auch wieder geschlossen?

Man kann einem Haltepunkt auch eine Bedingung geben.
Und im Notfall baut man sich einen Zweizeiler ins Programm.
Delphi-Quellcode:
if .... then
  Beep; << Haltepunkt hier drauf
Und wenn das Programm hängt, dann kann man auch den Debugger manuell anhalten und im Stacktrace und den jeweiligen lokalen Variablen schauen, wo es hängt.

stay 18. Apr 2017 22:55

AW: StringGrid mit string füllen geht nicht
 
Was meinst du mit geschlossen? :/ Ich habe die Befürchtung, nein werden sie nicht.

stay 19. Apr 2017 18:34

AW: StringGrid mit string füllen geht nicht
 
Hallo himitsu,

so wie es aussieht, lag es wirklich an dem nicht schließen.

Es tut mir wirklich leid, dass ich mit so Anfängerfragen komme, ich muss mir die Programmsprache selbst beibringen... :/ und da übersieht man leicht kleine entscheidene Details.


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