Zum Inhalt springen

PuppetMaster

Mitglieder
  • Gesamte Inhalte

    108
  • Benutzer seit

  • Letzter Besuch

Beiträge von PuppetMaster

  1. im C++ Builder sieht das ganze so aus:

    Erst mal eine neue Unit (Datei->Neu->Unit)

    Davon dann die Header-Datei öffnen (rechtsklick auf den Reiter "Unit1.cpp" "Quell/Header-Datei öffnen" klicken)

    dort dann zwischen #define und #endif folgender Code


    class TCaesar
    {
    private:
    protected:
    public:
    TCaesar(); //Konstruktor
    ~TCaesar(); //Destruktor
    AnsiString encode(AnsiString s, int delta);
    AnsiString decode(AnsiString s, int delta);
    published:
    };
    [/php]

    in der *.cpp Datei dann unter dem #include "Unit1.h"

    [php]
    TCaesar::TCaesar()
    {
    }

    TCaesar::~TCaesar()
    {
    }

    AnsiString TCaesar::encode(AnsiString s, int delta)
    {
    char* P = s.c_str(); //c_str() wandelt AnsiString in char* um
    AnsiString tmp = "";
    int iDelta = delta;
    int iRealDelta = 26;
    int iNewOrd;

    if(P != "")
    {
    while(P++ != 0) //glaube ich zumindest
    {
    //tja und ab hier weiß ich leider auch nicht weiter, dafür kenn ich michleider nicht gut genug aus
    }
    }
    return tmp;
    }

    AnsiString TCaesar::decode(AnsiString s, int delta)
    {
    // Hie dann das gleiche wie in encode machen bzw halt decode in C++ umsetzten
    }

    Aber ich denke den rest schaffst du bestimmt auch alleine, oder jemand hier im Forum macht den rest :)

  2. Die Angaben in dieser Tabelle basieren auf der Annahme, daß in der Formatieranweisungkeine Flag-Zeichen, Breitenangaben, Präzisionsangaben oder Größenmodifizierer enthalten waren

    Hinweis: Bestimmte Konventionen begleiten einige dieser Formatieranweisungen.

    Typzeichen Erwartete Eingabe Ausgabeformat

    Numerische Werte

    d Integer signed int (dezimal)

    i Integer signed int (dezimal)

    o Integer unsigned int (oktal)

    u Integer unsigned int (dezimal)

    x Integer unsigned int (hexadezimal), Buchstaben a bis f

    X Integer unsigned int (hexadezimal), Buchstaben A bis F

    f Gleitkomma vorzeichenbehafteter Wert der Form [-]dddd.dddd.

    e Gleitkomma vorzeichenbehafteter Wert der Form [-]d.dddd oder e[+/-]ddd

    g Gleitkomma vorzeichenbehafteter Wert im e- oder f-Format. Präzision gibt die Anzahl signifikanter Ziffern an.

    Abschließende Nullen und Dezimalpunkt werden nur ausgegeben, wenn es nötig ist.

    E Gleitkomma dasselbe Format wie e, aber mit dem Zeichen E für den Exponenten

    G Gleitkomma dasselbe Format wie e, aber mit dem Zeichen E für den Exponenten, wenn das Format e verwendet wird.

    Zeichen

    c Zeichen einzelnes Zeichen

    s String-Zeiger Ausgabe bis zu einem NULL-Zeichen oder dem Erreichen der durch Präzision vorgegebenen Zeichenzahl

    % (nichts) Ausgabe des Zeichens %

    Zeiger

    n Zeiger auf int Speichert an der Position, auf die das Eingabeargument zeigt, die Anzahl der bis jetzt ausgegebenen Zeichen.

    p Zeiger Gibt das Eingabeargument als Zeiger in hexadezimaler Form aus (near-Zeiger als YYYY, far-Zeiger als XXXX:YYYY).

    Unendlich große positive oder negative Gleitkommazahlen werden als +INF bzw. als -INF ausgegeben.

    Eine "IEEE-Nichtzahl" wird als +NAN oder -NAN (Not-A-Number ) angegeben.

  3. Ich habs hinbekommen! :D

    Es lag an der OnDraw Methode. In dieser hab ich die Scrollleisten ständig neuzeichnen lassen, daher hat das Prog wohl auch immer beide Scrollbars bewegt...

    Habs jetzt einfach über ein Flag gelöst. Wenn das erste mal gezeichnet wird, wird nach dem zeichnen der Scrollbars das Flag auf "true" gesetzt und danach, werden die Scrollbars nicht weiter neugezeichnet :)

    void CPCCView::OnDraw(CDC* pDC)
    {
    CPCCDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);

    if(!m_first)
    {
    m_Image->Load(pDoc->GetPathName());

    //Vertikale Scrollbar anpassen, positionieren und neuzeichnen
    si.nMax = m_Image->m_Height;
    si.nPage = m_Image->m_Height/2;
    this->SetScrollInfo(SB_VERT, &si, TRUE);

    //Horizontale Scrollbar anpassen, positionieren und neuzeichnen
    si.nMax = m_Image->m_Width;
    si.nPage = m_Image->m_Width/2;
    this->SetScrollInfo(SB_HORZ, &si, TRUE);

    m_first = true;
    }

    //Bild zeichnen
    m_Image->UpdateSizeOnDC(pDC);
    //m_Image->Show(pDC, CPoint(0,0), CPoint(m_Image->m_Width, m_Image->m_Height), 0,0);
    m_Image->Show(pDC, CRect(0, 0, m_Image->m_Width, m_Image->m_Height));

    }[/php]

    Danke nochmal für die Hilfe (=

  4. Wenn ich ScrollWindow() auskommentiere gehts (allerdings wird das Bild nicht gescrollt)

    Hier die MessageMap

    BEGIN_MESSAGE_MAP(CPCCView, CView)
    //{{AFX_MSG_MAP(CPCCView)
    ON_WM_LBUTTONDOWN()
    ON_WM_HSCROLL()
    ON_WM_VSCROLL()
    //}}AFX_MSG_MAP
    // Standard-Druckbefehle
    ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
    ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
    ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
    END_MESSAGE_MAP()
    [/PHP]

  5. Hi zusammen!

    Ich poste hier jetzt einfach mal rein, in der Hoffnung das hier auch ein paar VC++ PhreakZ dabei sind :)

    Main Problem:

    Ich versuch ein Bild zu scrollen, aber das gelingt mir nicht wirklich so wie ich das gern hätte.Wenn ich zB nach unten scrolle, wir automatisch mit nach rechts gescrollt, umgekehrt genauso. Scrolle ich nach oben, wird automatisch nach links gescrollt. :eek:

    So hab ich das ganze implementiert:

    void CPCCView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
    {
    si.cbSize = sizeof(si);
    si.fMask = SIF_ALL;
    GetScrollInfo(SB_HORZ, &si, si.fMask);

    hscroll = si.nPos;

    switch(nSBCode)
    {
    case SB_PAGERIGHT:
    si.nPos += si.nPage;
    break;
    case SB_LINERIGHT:
    si.nPos += 2;
    break;
    case SB_PAGELEFT:
    si.nPos -= si.nPage;
    break;
    case SB_LINELEFT:
    si.nPos -= 2;
    break;
    case SB_THUMBPOSITION:
    si.nPos = si.nTrackPos;
    break;
    }

    si.fMask = SIF_POS;
    SetScrollInfo(SB_HORZ, &si, TRUE);
    GetScrollInfo(SB_HORZ, &si);

    //Bei Positionsänderung: Fenster horizontal rollen
    if(si.nPos != hscroll)
    {
    ScrollWindow(m_Image->m_Height * (hscroll - si.nPos), 0, NULL, NULL);
    }

    CView::OnHScroll(nSBCode, nPos, pScrollBar);
    }

    void CPCCView::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
    {
    si.cbSize = sizeof(si);
    si.fMask = SIF_ALL;
    GetScrollInfo(SB_VERT, &si, si.fMask);

    vscroll = si.nPos;

    switch(nSBCode)
    {
    case SB_PAGEDOWN:
    si.nPos += si.nPage;
    break;
    case SB_LINEDOWN:
    si.nPos += 2;
    break;
    case SB_PAGEUP:
    si.nPos -= si.nPage;
    break;
    case SB_LINEUP:
    si.nPos -= 2;
    break;
    case SB_TOP:
    si.nPos = si.nMin;
    break;
    case SB_BOTTOM:
    si.nPos = si.nMax;
    break;
    case SB_THUMBTRACK:
    si.nPos = si.nTrackPos;
    break;
    }

    si.fMask = SIF_POS;
    SetScrollInfo(SB_VERT, &si, TRUE);
    GetScrollInfo(SB_VERT, &si);

    //Bei Positionsänderung: Fenster vertikal rollen und aktualisieren
    if(si.nPos != vscroll)
    {
    ScrollWindow(0, m_Image->m_Width * (vscroll - si.nPos) , NULL, NULL);
    UpdateWindow();
    }


    CView::OnVScroll(nSBCode, nPos, pScrollBar);
    } [/php]

    Vielleicht seht ihr ja meinen Fehler :confused:

  6. Du kannst dir bei Borland selbst auch ne Trial Version vom Builder runterladen

    Borland

    Das löst zumindest dein anfängliches Problem. Aber frag noch mal in der Schule nach, ich hab von meiner Berufsschule auch ne Nutzerlizenz bekommen für die 3 Jahre meiner Ausbildung

    Edit:

    Programme vom VC alssen sich nicht einfach so auf den Builder portieren, da musst du dann mit nem Extra Konverter dran, leider kann ich dir jetzt keinen nennen, aber es gibt sie :)

  7. Hi!

    Nur noch so zur Info. Wenn du Memo1->Lines->Strings schreibst und dann 'i' in der for-Schleife hochzählst, schreibst du jeden Buchstabe in eine neue Zeile.

    Aber die Frage von Knuddlbaer ist eigentlich berechtigt, da zeielenweise einlesen schneller geht. Allerdings hat das Memo eine eigene Funktion dafür, die da lautet Memo1->Lines->LoadFromFile("C:\DeineDatei.dat")

    Ist sogar noch bequemer, da du dir sogar das mit fstream usw sparst ;)

    P.S. AnsiString akzeptiert auch char über den op =


    AnsiString AS;
    char c[20] = "Hallo Welt!";

    //Funktioniert ohne weiteres
    AS = c;
    [/PHP]

  8. Hi!

    Deine Listbox hat auch die Eigeschaft Selected (is ne bool-var). Damit kannste ja in ner Schleife abfragen welcher Eintrag selketiert ist und ihn dann mit Listbox->Items->Strings[position] in ne AnsiString Variable packen zusammen mit dem Namen aus der Combobox. Un dann einfach über Listbox->Items->Add(NeuerEintrag) hinzufügen.

    Bsp.:


    void TForm1::NeuerEintrag(void)
    {
    for(int i = 0; i<ListBox->Items->Count; ++i)
    {
    if(ListBox->Selected[i])
    {
    //Temp is vom Typ AnsiString das du in der Header-Datei deklarieren kannst
    //nur noch den Namen aus der ComboBox holen und in Temp schreiben und ab damit in die andere Listbox
    Temp = ListBox->Items->Strings[i];
    }
    }
    }
    [/PHP]

    So in etwa. Nich getestet. *g*

    Puppet :D

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...