Autor Beitrag
Toastbrotbaby
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 98



BeitragVerfasst: Fr 22.07.05 08:49 
hab da ein kleines problem mit einer ini einem TEdit und co

ausblenden Delphi-Quelltext
1:
ini.WriteInteger ('Sektion1', 'Eigenschaft1', Edit1.Text);					


das ist das was ich atm habe. Fehlermeldung ist

Zitat:
[Fehler] Bilanz.Tool.pas(393): Inkompatible Typen: 'Integer' und 'TCaption'


eigentlich ist mir irgendwie schon klar warum dies so ist ... nur wie kann ich es lösen?

muss ich vorher InToStr anwenden oder kann ich es auch einfacher lösen indem ich irgendwie statt dem Edit1.Text eine andere eingabe tätige ...?

Gruss
Toast
Matthias-K
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 271

Win95, Win98, Win2000, WinXP, Linux
D2, D4 Client/Server, D5 Enterprise, D6 Enterprise, D7 Enterprise, Delphi2005, C/C++ 3.0, C/C ++ 5.0, C/C++ 6.0
BeitragVerfasst: Fr 22.07.05 08:53 
strtoint hört sich schon gut an!!!

matthias


Zuletzt bearbeitet von Matthias-K am Fr 22.07.05 09:06, insgesamt 1-mal bearbeitet
Stübi
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 331

Win XP, Win 2000, Win ME
D5 Ent, D7 Prof, D2005 PE, C#
BeitragVerfasst: Fr 22.07.05 08:53 
Schreibe einfach:
ausblenden Delphi-Quelltext
1:
  ini.WriteInteger ('Sektion1', 'Eigenschaft1', StrToInt(Edit1.Text));					

Du kannst nicht einen String in einen Integer speichern Du musst den schon zuerst umwandeln, aber ein Edit würde ich so oder so immer als String abspeichern.
Beim Laden zurück ins Edit nicht vergessen, dass der Wert wieder in ein String umgewandelt werden muss (IntToStr).

Gruss Stübi

_________________
Neun von zehn Stimmen in meinen Kopf sagen, dass ich nicht verrückt sei. Die zehnte summt die Tetrismelodie.
Toastbrotbaby Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 98



BeitragVerfasst: Fr 22.07.05 09:05 
so weit so gut ...

nun wäre da noch eine andere fehlermeldung, die ich denke mal, damit zusammen hängt ...

ausblenden Delphi-Quelltext
1:
Je := ini.ReadInteger ('Sektion1', 'Eigenschaft1', '');					



ist folgendes möglich?
ausblenden Delphi-Quelltext
1:
Je := ini.ReadInteger ('Januar', 'Einnahme', IntToStr (''));					


wären ein paar mehr zeilen, daher frag ich lieber vorher ... nich das es nich klappt und ich alles wieder rausfummeln darf *seufz*

Sollte das nicht richtig sein, wo müsste ich dann wieder umwandeln?

Gruss
Toasti
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Fr 22.07.05 09:07 
Nimm doch einfach WriteString und ReadString. Dann musst du garnichts wandeln.
Matthias-K
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 271

Win95, Win98, Win2000, WinXP, Linux
D2, D4 Client/Server, D5 Enterprise, D6 Enterprise, D7 Enterprise, Delphi2005, C/C++ 3.0, C/C ++ 5.0, C/C++ 6.0
BeitragVerfasst: Fr 22.07.05 09:10 
ausblenden Delphi-Quelltext
1:
Je := ini.ReadInteger ('Sektion1', 'Eigenschaft1', '');					


so geht das aber nicht! der 3. parameter beim lesen ist der wert, der zurückgegeben wird, wenn es die sektion nicht gibt oder sonstwas nicht stimmt! hier übergibt man meistens ne einfache 0!

und deine 2. funktion vergessen wir lieber gleich wieder und einigen uns darauf, das du sowas nie geschrieben hast! :roll:

mfg matthias
Toastbrotbaby Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 98



BeitragVerfasst: Fr 22.07.05 09:17 
user profile iconMatthias-K hat folgendes geschrieben:
ausblenden Delphi-Quelltext
1:
Je := ini.ReadInteger ('Sektion1', 'Eigenschaft1', '');					


so geht das aber nicht! der 3. parameter beim lesen ist der wert, der zurückgegeben wird, wenn es die sektion nicht gibt oder sonstwas nicht stimmt! hier übergibt man meistens ne einfache 0!

und deine 2. funktion vergessen wir lieber gleich wieder und einigen uns darauf, das du sowas nie geschrieben hast! :roll:

mfg matthias



das war nur ein spontaner gedanke ...

nur wenn ich es von StrToInt wandle muss ich es ja früher oder später zurück kriegen ... und wenn nun die fehlermeldung

Zitat:
[Fehler] Bilanz.Tool.pas(450): Inkompatible Typen: 'Integer' und 'String'


bekomme dann muss da ja auch was korrigier bar sein ...

ach und ich möchte das aber gerne als Integer speichern und nicht als String ....

Gruss
Toast
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Fr 22.07.05 09:18 
In der INI ist das sowieso ein String.
Toastbrotbaby Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 98



BeitragVerfasst: Fr 22.07.05 09:19 
*hmpf*

nagut ... dann halt nicht ;)

war ja n schöner versuch ...

Trotzdem THX
Matthias-K
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 271

Win95, Win98, Win2000, WinXP, Linux
D2, D4 Client/Server, D5 Enterprise, D6 Enterprise, D7 Enterprise, Delphi2005, C/C++ 3.0, C/C ++ 5.0, C/C++ 6.0
BeitragVerfasst: Fr 22.07.05 09:21 
ud kommst in teufels küche mit deiner vorgehensweise.

speicher nach dem typ, was in dem edit steht, wenn nur zahlen drin stehen, speicher als int, wenn text und/oder zahlen drin sind, speichers als string.

wenn es eine funktion gibt, mit der du einen string in einen integer wandeln kannst, und die StrToInt heist, was wäre wohl naheliegend, wie das gegenstück zu besagter funktion heißt? IntToStr???

*g*

matthias
firus1983
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 170

Win98,XP,
D6 Entrpr
BeitragVerfasst: Fr 22.07.05 09:23 
Egal als was du es speicherst, effektiv ist es in der INI ein String.
Es kommt nur darauf an, wie du es ausliest.
Soll heissen, du kannst eigentlich immer als String Speichern [ ini.WriteString ]

Wenn du den Wert als String auslesen möchtest, dann nimm ini.ReadAsString()
Wenn du den Wert als Integer auslesen möchtest, dann nimm ini.ReadAsInteger()

Ansonsten kannst du einen String mit StrToInt(Variable) in einen Integer-Wert wandeln und
einen Integer-Wert mit IntToStr(Variable) in einen String wandeln.


Schau dir am besten mal folgendes an: Tutorial auf Delphi-Source

_________________
Veni Vidi Codi !
Ich kam, sah, und programmierte !
Toastbrotbaby Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 98



BeitragVerfasst: Fr 22.07.05 09:36 
user profile iconMatthias-K hat folgendes geschrieben:
ud kommst in teufels küche mit deiner vorgehensweise.

speicher nach dem typ, was in dem edit steht, wenn nur zahlen drin stehen, speicher als int, wenn text und/oder zahlen drin sind, speichers als string.

wenn es eine funktion gibt, mit der du einen string in einen integer wandeln kannst, und die StrToInt heist, was wäre wohl naheliegend, wie das gegenstück zu besagter funktion heißt? IntToStr???

*g*

matthias


hmmm genau das hatte ich vor. Ein TEdit in dem zahlen eingegeben werden sollen. Und der Inhalt, sprich die ZAHLEN sollen gespeichert werden. deshalb ja meine frage wo ich die IntToStr setzen muss, bzw wann und wie ich es zurück wandeln muss.

ausblenden Delphi-Quelltext
1:
ini.WriteInteger ('Sektion1', 'Eigenschaft1e', Edit1.Text);					


ausblenden Delphi-Quelltext
1:
e := ini.ReadInteger ('Sektion1', 'Eigenschaft1', '');					


das sind ja die lese und schreib funktion ... da fängt das prob ja an das er nörgelt wegen dem Edit1.Text.

Und dafür brauch ich nun des Rätsels lösung.

Ich hoffe das ich mich diesmal so ausgedrückt habe das man versteht was ich will

Gruss
Toast
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Fr 22.07.05 09:42 
Ähm, hast du überhaupt mal gelesen, was firus1983 geschrieben hat :?
Edit1.Text ist ein string. Du möchtest mit WriteInteger speichern, also musst du aus dem String einen Integer machen: StrToInt.
Beim Lesen erhälst du einen Integer, den du aber in einen String speichern willst: IntToStr und wenn du dir die Arbeit sparen möchtest, benutzt du für beides gleich Write-/ReadString und prüft vorher ab, ob es wirklich nur Zahlen sind (Suche in: Delphi-Forum, Delphi-Library "EDIT NUR ZAHLEN")

Gruß,
maxk

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Fr 22.07.05 09:47 
Dann will ich mal:
In der Text-Eigenschaft eines Edit-Feldes dürfen nur STRINGS stehen.
Das Strings nur aus Zahlzeichen bestehen können, ist lediglich ein Sonderfall. Es bleibt aber zunächst ein String.
Mit StrToInt kannst du Strings in Integer wandeln. Beachte dazu auch StrToFloat!

Wenn du also eine Methode WriteInteger verwendest, dann solltest du auch ein Integer als Parameter übergeben. Es macht also keinen Sinn (es ist sogar falsch, wie du gemerkt hast), dort einen String zu übergeben.

Wenn du ReadInteger benutzt, dann darf der Parameter nur, na weißt du es schon? Logisch! vom Typ Integer sein. <''> ist aber ein String! Wenn auch ohne Inhalt. Was wirst du also als Default-Wert benötigen? Eine Zahl. z.B. 0.

Delphi ist kein Basic. Hier musst du dich schon an die Strenge Typüberprüfung gewöhnen.
Stübi
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 331

Win XP, Win 2000, Win ME
D5 Ent, D7 Prof, D2005 PE, C#
BeitragVerfasst: Fr 22.07.05 09:47 
Ok ich versuch mich auch nochmals,
Nimm ganz einfach zum speichern deines Editinhalts:
ausblenden Delphi-Quelltext
1:
ini.WriteString('Sektion1', 'Eigenschaft1', Edit1.Text);					

und zum laden deines gespeicherten Editinhalts
ausblenden Delphi-Quelltext
1:
Edit1.Text := ini.ReadString('Sektion1', 'Eigenschaft1', '');					

und wenn diese e Variabel ein Integer ist dann mach
ausblenden Delphi-Quelltext
1:
e := ini.ReadInteger ('Sektion1', 'Eigenschaft1', 0);					


Aufgefallen ist mir auch noch, dass du nicht das Gleiche speicherts wie das was du wieder laden willst:
Zitat:

ausblenden Delphi-Quelltext
1:
ini.WriteInteger ('Sektion1', 'Eigenschaft1e', Edit1.Text);					

ausblenden Delphi-Quelltext
1:
e := ini.ReadInteger ('Sektion1', 'Eigenschaft1', '');					



Hoffe habe nichts übersehen, hilft dir das jetzt weiter?

Gruss Stübi

_________________
Neun von zehn Stimmen in meinen Kopf sagen, dass ich nicht verrückt sei. Die zehnte summt die Tetrismelodie.
Toastbrotbaby Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 98



BeitragVerfasst: Fr 22.07.05 09:51 
user profile iconmaxk hat folgendes geschrieben:
Ähm, hast du überhaupt mal gelesen, was firus1983 geschrieben hat :?
Edit1.Text ist ein string. Du möchtest mit WriteInteger speichern, also musst du aus dem String einen Integer machen: StrToInt.
Beim Lesen erhälst du einen Integer, den du aber in einen String speichern willst: IntToStr und wenn du dir die Arbeit sparen möchtest, benutzt du für beides gleich Write-/ReadString und prüft vorher ab, ob es wirklich nur Zahlen sind (Suche in: Delphi-Forum, Delphi-Library "EDIT NUR ZAHLEN")

Gruß,
maxk


ja sicher hab ich das gelesen ... aber ihr müsst mir nich alle 2 sek erzählen DAS ich es umwandeln muss ... ich will wissen WO ich es zurückwandeln muss ...

stellt sich mir die frage ob überhaupt wirklich verstanden wird was ich überhaupt will ... kommt mir nämlich grad nicht so vor ... vlt drück ich mich auch falsch aus, will ich nicht abstreiten.

Nur diese diskussion hier dreht sich irgendwie im kreis.

Gruss
Toast
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Fr 22.07.05 09:52 
Und um nochmal mit den Typumwandlungen:
ausblenden Delphi-Quelltext
1:
2:
ini.WriteInteger('Sektion1', 'Eigenschaft1', StrToInt(Edit1.Text) );
Edit1.Text:=IntToStr( ini.ReadInteger('Sektion1', 'Eigenschaft1', 0) );


Gruß,
maxk

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
Toastbrotbaby Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 98



BeitragVerfasst: Fr 22.07.05 09:54 
@stübi das mit dem nicht das selbe speichern und laden ist nur ein fipptehler hier im forum ;)
im proggie läuft das ja mit den strings ... aber ich will es halt auf Integer umschreiben.
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Fr 22.07.05 09:55 
Zitat:
stellt sich mir die frage ob überhaupt wirklich verstanden wird was ich überhaupt will ... kommt mir nämlich grad nicht so vor ... vlt drück ich mich auch falsch aus, will ich nicht abstreiten.
Ist das unsere Schuld, wenn wir dich nicht verstehen. Dass deine Shifttaste kaputt zu sein scheint, macht die Sache auch nicht einfacher. Wenn jemand eine Antwort zu hinklatscht, dann ist das einfach unfreundlich. Aber bei einem eigenen Problem ist es einfach frech, dann noch zu meinen wir würden es nicht verstehen (wollen) :twisted:

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
Stübi
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 331

Win XP, Win 2000, Win ME
D5 Ent, D7 Prof, D2005 PE, C#
BeitragVerfasst: Fr 22.07.05 09:56 
Ok neuer Versuch (obwohl sich nicht nur die Diskussion dreht sondern auch mein Kopf :roll: )
Was willst du genau?
Wie willst due es machen?
Wo ist das Problem?
Gib etwas mehr Source!
Was ist die Variabel e in deinem letzten Beispiel? Oder ist dies keine Variabel und du willst damit nur sagen, dass dies das Edit ist?

Gruss Stübi

Edit: Bin ich so langsam im tippen oder seid ihr so schnell, dass ihr immer früher was geschrieben habt als ich?

_________________
Neun von zehn Stimmen in meinen Kopf sagen, dass ich nicht verrückt sei. Die zehnte summt die Tetrismelodie.