| Autor |
Beitrag |
Fredy
      
Beiträge: 57
Win Vista Ultimate
|
Verfasst: Sa 16.05.09 17:28
Hallo liebe Community,
Stehe gerade vor einem Problem bei dem ich nicht mehr weiter weiß.
Bei diesem Befehl sagt Delphi mir [Error] Unit19.pas(237): Incompatible types: 'Char' and 'TCaption'
Delphi-Quelltext 1:
| Angebot_RechnungSatz.datArtikel1[0] := cbArtikel.Text; |
Hat jemand eine Idee wie ich das Gelöst bekomme ?
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Sa 16.05.09 17:37
Was ist denn Angebot_RechnungSatz für ein Typ?
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Sa 16.05.09 17:37
Angebot_RechnungSatz.datArtikel1[0] := cbArtikel.Text;Ich würde darauf tippen, dass die Eigenschaft datArtikel1 ein String ist, und keine Stringliste (Ich weiß nicht, was Angebot_RechnungsSatz ist...  Musst du schon dazu sagen  )
Wenn das so ist, dann versuchst du, in das nullte Zeichen einen ganzen String zu schreiben, was, mal abgesehen davon, dass ein String bei 1 anfängt zu zählen und darum kein nulltes Zeichen existiert, die Fehlermeldung erklärt. Lasse mal den Index weg: Angebot_RechnungSatz.datArtikel1 := cbArtikel.Text;
Wenn das nicht hilft, poste mal die deklaration von Angebot_RechnungsSatz.
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
Fredy 
      
Beiträge: 57
Win Vista Ultimate
|
Verfasst: Sa 16.05.09 17:45
das war nur als Bsp. gedacht meine Ausführung sieht so aus:
Delphi-Quelltext 1: 2: 3: 4: 5:
| IF Angebot_RechnungSatz.datArtikel1[i] = '' then begin Angebot_RechnungSatz.datArtikel1[i+1] := cbArtikel.Text; exit; end; |
Delphi-Quelltext 1: 2: 3:
| Angebot_RechnungSatz : Angebot_RechnungRecord; Angebot_RechnungDatei : Angebot_RechnungFile; Angebot_RechnungArray : Array of Angebot_RechnungRecord; |
Noch eine kurz Erklärung wozu das dienen soll.
Wenn ich in der Combobox einen Eintrag auswähle, soll dieser in dem Angebot_RechnungSatz.datArtikel1[1] gespeichert werden, die nächste Auswahl in der Combobox dann in Angebot_RechnungSatz.datArtikel1[2].
Hab es am Anfang in zwei einzelne Dateien geschrieben datArtikel1 und datArtikel2 das ging einbandfrei aber das konnte ich nicht realisieren bei einer späteren Benutzung. Deswegen müssen alle Ausgewählten Artikel in ein Datenfeld Angebot_RechnungSatz.datArtikel1 übernommen werden.
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Sa 16.05.09 18:01
Hng, jetzt wissen wir immer noch nicht, wie das Ding definiert ist.
WAS ist Angebot_RechnungSatz.datArtikel1 ?
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
Regan
      
Beiträge: 2157
Erhaltene Danke: 72
Java (Eclipse), Python (Sublimetext 3)
|
Verfasst: Sa 16.05.09 18:09
Vielleicht so?
Delphi-Quelltext 1:
| Angebot_RechnungSatz.datArtikel1[0] := PChar(cbArtikel.Text); |
|
|
Fredy 
      
Beiträge: 57
Win Vista Ultimate
|
Verfasst: Sa 16.05.09 18:21
das hast du gemeint ups Endschuldigung
Delphi-Quelltext 1:
| datArtikel1 : string[20]; |
@ Regan das hab ich auch schon probiert geht nicht kommt eine andere Fehlermeldung 
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Sa 16.05.09 18:39
Fredy hat folgendes geschrieben : | ... geht nicht kommt eine andere Fehlermeldung  |
Dann verrat die uns doch direkt..
Der Fehler muss aber anscheinend woanders liegen.
Delphi-Quelltext 1: 2: 3: 4: 5:
| procedure TForm1.FormCreate(Sender: TObject); var test: string[20]; begin test := ComboBox1.Text; end; |
geht ohne Probleme. Zeig doch endlich mal mehr Code.. Deklarationen, was vor der fehlerhaften Zeile steht, usw.
Edit: Ähh, moment, ich seh da grad was.
WARUM die eckigen Klammern?
Delphi-Quelltext 1:
| Angebot_RechnungSatz.datArtikel1[i+1] := cbArtikel.Text; |
Du bist hier in einem String.. mit eckigen Klammern greifst du auf einen bestimmten Buchstaben zu, da kannst du logischerweise keinen String reinstopfen.
Kann es sein, dass du in der Deklaration ein Array meinst?
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
Fredy 
      
Beiträge: 57
Win Vista Ultimate
|
Verfasst: Sa 16.05.09 18:44
Diese Fehlermeldung kommt:
Delphi-Quelltext 1:
| [Error] Unit19.pas(237): Incompatible types: 'Char' and 'PAnsiChar' |
Vorher:
Delphi-Quelltext 1: 2: 3:
| procedure TfrmRAEingabe.btnStartClick(Sender: TObject); var i : integer; begin |
Nachher
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| IF Angebot_RechnungSatz.datArtikel1[i+1] = '' then begin Angebot_RechnungSatz.datArtikel1[i+2] := cbArtikel.Text; exit; end;
IF Angebot_RechnungSatz.datArtikel1[i+1] = '' then begin Angebot_RechnungSatz.datArtikel1[i+3] := cbArtikel.Text; exit; end; |
Edit: Stimmt du hast Recht müsste ein Array draus machen upps
Zuletzt bearbeitet von Fredy am Sa 16.05.09 18:46, insgesamt 1-mal bearbeitet
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Sa 16.05.09 18:45
Joa, hat sich schon erledigt, hatte da was übersehen.
Mach nen Array[1..20] draus, statt einen String[20].
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
Fredy 
      
Beiträge: 57
Win Vista Ultimate
|
Verfasst: Sa 16.05.09 18:52
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:
| type Angebot_RechnungRecord = record datNr : longint; datVersion : string[40]; datNachname : string[40]; datVorname : string[40]; datFirma : string[40]; datMail : string[40]; datTel : string[40]; datLand : string[40]; datPLZ : longint; datORT : string[40]; datStrasse : string[40]; datVersandart : string[20]; datMitarbeiter : string[20]; datRechnungsdatum : string[40];
datArtikel1 : Array[1..20] of string; datWarenwert : double; datVersandkosten : double; datZwischensumme : double; datMWST : double; datEndbetrag : double;
end;
Angebot_RechnungFile = file of Angebot_RechnungRecord;
|
Jetzt bekomm ich eine andere Fehlermeldung und zwar diese :
Delphi-Quelltext 1:
| [Error] Unit1.pas(199): Type 'Angebot_RechnungRecord' needs finalization - not allowed in file type |
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Sa 16.05.09 18:54
Ach, du hast da auch noch typisierte Dateien.
Das geht nicht mit Strings, da dessen Größe nicht fest steht.
Versuch mal mit ShortString. Das hat immer eine feste Größe von 255 Zeichen, sollte also eigentlich gehen.
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
Fredy 
      
Beiträge: 57
Win Vista Ultimate
|
Verfasst: Sa 16.05.09 18:59
Noch ein paar Sachen geändert das Starten geht schon mal. Ich schreib direkt zurück obs funktioniert
Edit: Neues Problem hinzugekommen  und zwar wenn ich das Formular starte kommt eine Fehlermeldung
Moderiert von Narses: Bild als Anhang hochgeladen.
Delphi-Quelltext 1:
| txtNummer.text := IntToStr(Angebot_RechnungArray[i].datNr); |
Ich glaube das leigt daran das ich hier auch das i benutzt habe.
Einloggen, um Attachments anzusehen!
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: So 17.05.09 18:22
"Lesen von Adresse 00..0" deutet darauf hin, dass du versuchst, ein Objekt zu lesen, das nicht im Speicher existiert, in deinem Fall würde ich vermuten, dass Angebot_RechnungArray über seine Grenze hinaus gelesen wurde, dass also i zu klein oder zu groß geworden ist, das wär zumindest meine Vermutung. Dann wiederrum, bei ausgeschalteter Bereichsprüfung in den Debugger-Optionen sollte Delphi eigentlich gnadenlos falsch auf den Speicher zugreifen, wenn i zu groß wird ...  in jedem Fall solltest du dir nochmal genau anschauen, welche Werte i annimmt und welche es annehmen darf (Im zweifelsfall dann eben den Code posten, wo das array deklariert ist bzw falls du SetLength aufrufst eben auch diese Zeile. Auch müsste man natürlich den Code sehen, bei dem i vorkommt, For-Schleife, vermute ich)
Edit: Übrigens solche fehlermeldungen kannst du mit STRG+C in textform kopieren, es macht dann *bim*, also nicht wundern.
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|