Autor Beitrag
Fredy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57

Win Vista Ultimate

BeitragVerfasst: 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'

ausblenden Delphi-Quelltext
1:
Angebot_RechnungSatz.datArtikel1[0] := cbArtikel.Text;					


Hat jemand eine Idee wie ich das Gelöst bekomme ?
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Sa 16.05.09 17:37 
Was ist denn Angebot_RechnungSatz für ein Typ?

_________________
PROGRAMMER: A device for converting coffee into software.
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: 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... :nixweiss: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57

Win Vista Ultimate

BeitragVerfasst: Sa 16.05.09 17:45 
das war nur als Bsp. gedacht meine Ausführung sieht so aus:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
IF Angebot_RechnungSatz.datArtikel1[i] = '' then
    begin
      Angebot_RechnungSatz.datArtikel1[i+1] := cbArtikel.Text;
    exit;
    end;


ausblenden Delphi-Quelltext
1:
2:
3:
  Angebot_RechnungSatz         : Angebot_RechnungRecord;   // Recordvariable
  Angebot_RechnungDatei        : Angebot_RechnungFile;     // Dateivariable
  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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Sa 16.05.09 18:09 
Vielleicht so?
ausblenden Delphi-Quelltext
1:
Angebot_RechnungSatz.datArtikel1[0] := PChar(cbArtikel.Text);					
Fredy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57

Win Vista Ultimate

BeitragVerfasst: Sa 16.05.09 18:21 
das hast du gemeint ups Endschuldigung

ausblenden Delphi-Quelltext
1:
datArtikel1         : string[20];					


@ Regan das hab ich auch schon probiert geht nicht kommt eine andere Fehlermeldung ;)
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Sa 16.05.09 18:39 
user profile iconFredy hat folgendes geschrieben Zum zitierten Posting springen:
... geht nicht kommt eine andere Fehlermeldung ;)

:autsch: :autsch:
Dann verrat die uns doch direkt..


Der Fehler muss aber anscheinend woanders liegen.
ausblenden 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?
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57

Win Vista Ultimate

BeitragVerfasst: Sa 16.05.09 18:44 
Diese Fehlermeldung kommt:

ausblenden Delphi-Quelltext
1:
[Error] Unit19.pas(237): Incompatible types: 'Char' and 'PAnsiChar'					


Vorher:

ausblenden Delphi-Quelltext
1:
2:
3:
procedure TfrmRAEingabe.btnStartClick(Sender: TObject);
var i : integer;
begin


Nachher

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57

Win Vista Ultimate

BeitragVerfasst: Sa 16.05.09 18:52 
ausblenden volle Höhe Delphi-Quelltext
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:
  //------------------------------------------------------------------------------
  //--------------------------- Angebot_RechnungRecord----------------------------
  //------------------------------------------------------------------------------

  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..20of string// of string dann oder ?

       datWarenwert        : double;
       datVersandkosten    : double;
       datZwischensumme    : double;
       datMWST             : double;
       datEndbetrag        : double;

     end;

     Angebot_RechnungFile           = file of Angebot_RechnungRecord;

  //------------------------------------------------------------------------------
  //--------------------------- Ende Angebot_RechnungRecord-----------------------
  //------------------------------------------------------------------------------



Jetzt bekomm ich eine andere Fehlermeldung und zwar diese :

ausblenden Delphi-Quelltext
1:
[Error] Unit1.pas(199): Type 'Angebot_RechnungRecord' needs finalization - not allowed in file type					
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57

Win Vista Ultimate

BeitragVerfasst: 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 user profile iconNarses: Bild als Anhang hochgeladen.
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: 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 ... :nixweiss: 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.

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.