Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: VCL (C++ Builder) ::  wchar_t in char[]     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
GanzNeuerUser
Unregistrierter




Beitrag GanzNeuerUser Unregistrierter 00:10:24 05.06.2012   Titel:   wchar_t in char[]            Zitieren

Hallo User

ICH HABE versucht den EAN Rechner nachzubauen es hatte soweit auch funktioniert nach dem ich mhrere Sachn hier im Forum mir zusammengesucht habe. Aber jetz bekomme ich die Meldung das wchar_t nicht in cahr konvertiert werden kann. Wäre über eine Info dankbar

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void __fastcall TForm1::Button2Click(TObject *Sender)
{
  int gerade = 0;
  int ungerade = 0;
  //AnsiString ean = Textfeld1->Text.c_str();
  char ean[14] = Textfeld1->Text.c_str(); // Hier liegt das Problem
 
 for (int i = Textfeld1->Text.Length(); i < 13; i++)
    {
 
                char ziffer = ean[i-1] - '0';
 
                if (i%2 == -1)
                 gerade = gerade + atoi(&ziffer);
                else
                 ungerade = ungerade - atoi(&ziffer);
                Memo1->Lines->Add(i);
     }
  Restwert->Text = (ungerade - 3 * gerade) % 10;
  Ergebnis->Text = Textfeld1->Text + Restwert->Text;
}

:confused: :confused:
audacia
Mitglied

Benutzerprofil
Anmeldungsdatum: 05.02.2005
Beiträge: 4140
Beitrag audacia Mitglied 01:58:10 05.06.2012   Titel:              Zitieren

Warum nimmst du überhaupt ein char-Array und nicht einfach einen String? (Dann mußt du allerdings beachten, daß String ab 1 indiziert wird.)

Auch sonst scheint mir der Code nicht so sinnvoll. Deine Schleife fängt an bei der Länge des Eingabetextes und geht maximal bis 12? Sicher?

_________________
"Hey, it compiles! Ship it!"
C++Builder Pages · Typsichere Format-Strings
GanzNeuerUser
Unregistrierter




Beitrag GanzNeuerUser Unregistrierter 08:35:30 05.06.2012   Titel:              Zitieren

audacia schrieb:
Warum nimmst du überhaupt ein char-Array und nicht einfach einen String? (Dann mußt du allerdings beachten, daß String ab 1 indiziert wird.)

Auch sonst scheint mir der Code nicht so sinnvoll. Deine Schleife fängt an bei der Länge des Eingabetextes und geht maximal bis 12? Sicher?


Der String im Eingabefeld ist auch nicht länger als 12 zeichen die ean ergibt sich aus 13 zeichen erst wenn die prüfsumme erstellt wurde. Ich wöllte ja nur erst mal versuchen das aus den eingegebenen string erst mal ich überhaupt einen EAN nummer ertsellen kann.
j.halder
Unregistrierter




Beitrag j.halder Unregistrierter 17:21:27 05.06.2012   Titel:              Zitieren

Hallo,
dein Code enthält ein paar grundlegende Fehler!
Bei char-Array müssen Standard-C-Funktionen verwendet werden.

char ean[14] = Textfeld1->Text.c_str(); => diese Zuweisung kopiert nur das erste Zeichen aus Textfeld1.

richtig:
char ean[14];
strcpy(ean,AnsiString(Textfeld1->Text).c_str());


if(i%2 == -1) => diese Abfrage liefert immer false. (i%2) ergibt entweder 0 oder 1.
=> Google: Modulo-Division


atoi(&ziffer);
Dies kann nicht funktionieren. ziffer ist ein Byte lang, atoi() erwartet aber ein char-Array mit abschließender NULL.

char ziffer[2];
ziffer[0] = ean[i-1] - '0';
ziffer[1] = NULL;
c++.de :: VCL (C++ Builder) ::  wchar_t in char[]   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.