| Autor |
Beitrag |
Toastbrotbaby
      
Beiträge: 98
|
Verfasst: Fr 22.07.05 08:49
hab da ein kleines problem mit einer ini einem TEdit und co
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
      
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
|
Verfasst: 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
      
Beiträge: 331
Win XP, Win 2000, Win ME
D5 Ent, D7 Prof, D2005 PE, C#
|
Verfasst: Fr 22.07.05 08:53
Schreibe einfach:
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 
      
Beiträge: 98
|
Verfasst: 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 ...
Delphi-Quelltext 1:
| Je := ini.ReadInteger ('Sektion1', 'Eigenschaft1', ''); |
ist folgendes möglich?
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
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Fr 22.07.05 09:07
Nimm doch einfach WriteString und ReadString. Dann musst du garnichts wandeln.
|
|
Matthias-K
      
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
|
Verfasst: Fr 22.07.05 09:10
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!
mfg matthias
|
|
Toastbrotbaby 
      
Beiträge: 98
|
Verfasst: Fr 22.07.05 09:17
Matthias-K hat folgendes geschrieben: | 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!
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
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Fr 22.07.05 09:18
In der INI ist das sowieso ein String.
|
|
Toastbrotbaby 
      
Beiträge: 98
|
Verfasst: Fr 22.07.05 09:19
*hmpf*
nagut ... dann halt nicht
war ja n schöner versuch ...
Trotzdem THX
|
|
Matthias-K
      
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
|
Verfasst: 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
      
Beiträge: 170
Win98,XP,
D6 Entrpr
|
Verfasst: 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 
      
Beiträge: 98
|
Verfasst: Fr 22.07.05 09:36
Matthias-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.
Delphi-Quelltext 1:
| ini.WriteInteger ('Sektion1', 'Eigenschaft1e', Edit1.Text); |
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
      
Beiträge: 1696
Erhaltene Danke: 1
Win XP, Debian Lenny
Delphi 6 Personal
|
Verfasst: 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 Write Integer 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 ( "EDIT NUR ZAHLEN")
Gruß,
maxk
_________________ Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
|
|
jasocul
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: 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
      
Beiträge: 331
Win XP, Win 2000, Win ME
D5 Ent, D7 Prof, D2005 PE, C#
|
Verfasst: Fr 22.07.05 09:47
Ok ich versuch mich auch nochmals,
Nimm ganz einfach zum speichern deines Editinhalts:
Delphi-Quelltext 1:
| ini.WriteString('Sektion1', 'Eigenschaft1', Edit1.Text); |
und zum laden deines gespeicherten Editinhalts
Delphi-Quelltext 1:
| Edit1.Text := ini.ReadString('Sektion1', 'Eigenschaft1', ''); |
und wenn diese e Variabel ein Integer ist dann mach
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: |
Delphi-Quelltext 1:
| ini.WriteInteger ('Sektion1', 'Eigenschaft1e', Edit1.Text); |
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 
      
Beiträge: 98
|
Verfasst: Fr 22.07.05 09:51
maxk 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 ( "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
      
Beiträge: 1696
Erhaltene Danke: 1
Win XP, Debian Lenny
Delphi 6 Personal
|
Verfasst: Fr 22.07.05 09:52
Und um nochmal mit den Typumwandlungen: 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 
      
Beiträge: 98
|
Verfasst: 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
      
Beiträge: 1696
Erhaltene Danke: 1
Win XP, Debian Lenny
Delphi 6 Personal
|
Verfasst: 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) 
_________________ Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
|
|
Stübi
      
Beiträge: 331
Win XP, Win 2000, Win ME
D5 Ent, D7 Prof, D2005 PE, C#
|
Verfasst: Fr 22.07.05 09:56
Ok neuer Versuch (obwohl sich nicht nur die Diskussion dreht sondern auch mein Kopf  )
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.
|
|
|